![]() ![]() If Win8-only calls are not used, then presumably it should still build and run on Windows 7, presumably with the flag flipped back to Win7. In my limited understanding, all PR bpo-15951 does is set a compiler macro to allow use of Win API calls present on >=Win8 instead of >=Win7. These pseudohandles have to be identified in Python because they're not supported by SetHandleInformation or the PROC_THREAD_ATTRIBUTE_HANDLE_LIST of CreateProcess, both of which require real kernel handles. They're also verified in functions such as GetFileType via the undocumented function Verif圜onsoleIoHandle. These console pseudohandles are tagged for routing in the Windows API by setting the lower 2 bits. Rather, the console host process maintains a private table of pseudohandles for console buffers. With the LPC implementation, file handles for the console input buffer and screen buffer(s) are not real handles for kernel File objects. This is the heap referred to by claims in the console API docs such as "f the total size of the specified number of characters exceeds the available heap, the function fails with ERROR_NOT_ENOUGH_MEMORY". Large messages that don't fit in a LPC packet are passed in a 64 KiB window of shared memory that's overlayed by a heap. Prior to Windows 8, console API requests are instead sent over an LPC port. There's no practical limit on the size of reads and writes via these files. ![]() A console client process opens virtual files on ConDrv such as Connect (for generic functions such as GetConsoleCP), Input (default StandardInput), Output (default StandardOutput, StandardError), Console (//./CON), CurrentIn (//./CONIN$), and CurrentOut (//./CONOUT$). The console host process opens a file object for the ConDrv device itself in order to handle IOCTLs from clients. In Windows 8 , the console uses "\\Device\\ConDrv" with kernel file objects. The same applies to _io_WindowsConsoleIO_write_impl in Modules/_io/winconsoleio.c. Priority = 'normal' resolution = 'fixed' stage = 'resolved' status = 'closed' superseder = None type = 'enhancement' url = '' versions = ģ.9 can drop support for console pseudohandles in set_inheritable in Python/fileutils.c and Popen._filter_handle_list in Lib/subprocess.py.Īlso, _Py_write_impl in Python/fileutils.c can remove the 32767 byte limit for console files (and other character devices such as NUL, since it over-generalizes via isatty). Activity = actor = 'steve.dower' assignee = 'none' closed = True closed_date = closer = 'steve.dower' components = Ĭreation = creator = 'vstinner' dependencies = ![]()
0 Comments
Leave a Reply. |