Author: andrewjlawrence
Branch: winoverlapped
Changeset: r95910:ba8adec396ef
Date: 2019-02-08 15:55 +0000
http://bitbucket.org/pypy/pypy/changeset/ba8adec396ef/
Log: Started implementing CreateIoCompletionPort
diff --git a/lib_pypy/_overlapped.py b/lib_pypy/_overlapped.py
--- a/lib_pypy/_overlapped.py
+++ b/lib_pypy/_overlapped.py
@@ -17,7 +17,7 @@
NULL = _ffi.NULL
-from _winapi import INVALID_HANDLE_VALUE, _MAX_PATH , _Z
+from _winapi import INVALID_HANDLE_VALUE, _MAX_PATH , _Z, _int2handle
import _winapi
from enum import Enum
@@ -100,6 +100,12 @@
return result
+def _int2intptr(int2cast):
+ return _ffi.cast("ULONG *", int2cast)
+
+def _int2dword(int2cast):
+ return _ffi.new("DWORD[1]", [int2cast])
+
def CreateEvent(eventattributes, manualreset, initialstate, name):
event = _kernel32.CreateEventW(NULL, manualreset, initialstate, _Z(name))
if not event:
@@ -128,8 +134,19 @@
raise _winapi._WinError()
def CreateIoCompletionPort(handle, existingcompletionport, completionkey,
numberofconcurrentthreads):
- return None
+ ##completionkey = _int2intptr(completionkey)
+ existingcompletionport = _int2handle(existingcompletionport)
+ ##numberofconcurrentthreads = _int2dword(numberofconcurrentthreads)
+ #import pdb; pdb.set_trace()
+ result = _kernel32.CreateIoCompletionPort(handle,
+ existingcompletionport,
+ completionkey,
+ numberofconcurrentthreads)
+ if not result:
+ raise _winapi._WinError()
+
+ return result
def GetQueuedCompletionStatus(completionport, milliseconds):
numberofbytes = _ffi.new('DWORD[1]', [0])
@@ -138,7 +155,7 @@
if completionport is None:
raise _winapi._WinError()
overlapped = _ffi.new('OVERLAPPED*')
- result = _kernel32.GetQueuedCompletionStatus(_Z(completionport),
+ result = _kernel32.GetQueuedCompletionStatus(completionport,
numberofbytes,
completionkey,
overlapped,
@@ -146,7 +163,6 @@
err = _kernel32.GetLastError()
return (err, numberofbytes, completionkey, overlapped)
-
@_ffi.callback("void(void*, bool)")
def post_to_queue_callback(lpparameter, timerorwaitfired):
pdata = _ffi.cast("PostCallbackData *", lpparameter)
@@ -157,7 +173,7 @@
data = _ffi.new('PostCallbackData[1]')
newwaitobject = _ffi.new("HANDLE[1]")
- data[0].hCompletionPort = _Z(completionport)
+ data[0].hCompletionPort = completionport
data[0].Overlapped = ovaddress[0]
success = _kernel32.RegisterWaitForSingleObject(newwaitobject,
object,
diff --git a/lib_pypy/_pypy_winbase_build.py b/lib_pypy/_pypy_winbase_build.py
--- a/lib_pypy/_pypy_winbase_build.py
+++ b/lib_pypy/_pypy_winbase_build.py
@@ -141,6 +141,7 @@
BOOL WINAPI PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR,
LPOVERLAPPED);
BOOL WINAPI GetQueuedCompletionStatus(HANDLE, LPDWORD, PULONG_PTR,
LPOVERLAPPED, DWORD);
+HANDLE WINAPI CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD);
#define WT_EXECUTEINWAITTHREAD 0x00000004
#define WT_EXECUTEONLYONCE 0x00000008
diff --git a/lib_pypy/_pypy_winbase_cffi.py b/lib_pypy/_pypy_winbase_cffi.py
--- a/lib_pypy/_pypy_winbase_cffi.py
+++ b/lib_pypy/_pypy_winbase_cffi.py
@@ -3,8 +3,8 @@
ffi = _cffi_backend.FFI('_pypy_winbase_cffi',
_version = 0x2601,
- _types =
b'\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x09\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x19\x01\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\xC6\x03\x00\x00\x13\x11\x00\x00\xCB\x03\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x13\x11\x00\x00\x13\x11\x00\x00\xC5\x03\x00\x00\xC1\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x03\x00\x00\x1F\x11\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x1F\x11\x00\x00\x15\x11\x00\x00\xBC\x03\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\xC0\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x31\x11\x00\x00\x18\x03\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x
00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x31\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x31\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x1F\x11\x00\x00\x0A\x01\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x80\x03\x00\x00\x5E\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x5E\x11\x00\x00\x5E\x11\x00\x00\x1B\x11\x00\x00\x1C\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x3B\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x15\x11\x00\x00\x5E\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x02\x0F\x00\x00\x7B\x0D\x00\x00\x0
6\x01\x00\x00\x00\x0F\x00\x00\x7B\x0D\x00\x00\x00\x0F\x00\x00\x7B\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x15\x0D\x00\x00\xC4\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xC6\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x83\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x80\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x86\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x86\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x5E\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x8C\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xCB\x0D
\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xCB\x0D\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x02\x09\x00\x00\xC3\x03\x00\x00\x05\x09\x00\x00\x06\x09\x00\x00\x03\x09\x00\x00\x02\x01\x00\x00\x01\x09\x00\x00\x00\x09\x00\x00\xCA\x03\x00\x00\x04\x01\x00\x00\x00\x01',
- _globals =
(b'\x00\x00\x2C\x23CancelIo',0,b'\x00\x00\x2F\x23CancelIoEx',0,b'\x00\x00\x2C\x23CloseHandle',0,b'\x00\x00\x2F\x23ConnectNamedPipe',0,b'\x00\x00\x82\x23CreateEventA',0,b'\x00\x00\x88\x23CreateEventW',0,b'\x00\x00\x8E\x23CreateFileA',0,b'\x00\x00\xB0\x23CreateFileW',0,b'\x00\x00\x97\x23CreateNamedPipeA',0,b'\x00\x00\xA6\x23CreateNamedPipeW',0,b'\x00\x00\x1E\x23CreatePipe',0,b'\x00\x00\x12\x23CreateProcessA',0,b'\x00\x00\x5D\x23CreateProcessW',0,b'\x00\x00\x54\x23DuplicateHandle',0,b'\x00\x00\xA4\x23GetCurrentProcess',0,b'\x00\x00\x3D\x23GetExitCodeProcess',0,b'\x00\x00\x78\x23GetLastError',0,b'\x00\x00\x73\x23GetModuleFileNameW',0,b'\x00\x00\x33\x23GetOverlappedResult',0,b'\x00\x00\x41\x23GetQueuedCompletionStatus',0,b'\x00\x00\xA1\x23GetStdHandle',0,b'\x00\x00\x78\x23GetVersion',0,b'\x00\x00\x4E\x23PostQueuedCompletionStatus',0,b'\x00\x00\x24\x23RegisterWaitForSingleObject',0,b'\xFF\xFF\xFF\x1FSEM_FAILCRITICALERRORS',1,b'\xFF\xFF\xFF\x1FSEM_NOALIGNMENTFAULTEXCEPT',4,b
'\xFF\xFF\xFF\x1FSEM_NOGPFAULTERRORBOX',2,b'\xFF\xFF\xFF\x1FSEM_NOOPENFILEERRORBOX',32768,b'\x00\x00\x6C\x23SetErrorMode',0,b'\x00\x00\xB9\x23SetEvent',0,b'\x00\x00\x48\x23SetNamedPipeHandleState',0,b'\x00\x00\x39\x23TerminateProcess',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\x6F\x23WaitForSingleObject',0,b'\x00\x00\x69\x23_get_osfhandle',0,b'\x00\x00\x10\x23_getch',0,b'\x00\x00\x10\x23_getche',0,b'\x00\x00\x7D\x23_getwch',0,b'\x00\x00\x7D\x23_getwche',0,b'\x00\x00\x10\x23_kbhit',0,b'\x00\x00\x07\x23_locking',0,b'\x00\x00\x0C\x23_open_osfhandle',0,b'\x00\x00\x00\x23_putch',0,b'\x00\x00\x7F\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\x7A\x23_ungetwch',0),
- _struct_unions =
((b'\x00\x00\x00\xC8\x00\x00\x00\x03$1',b'\x00\x00\xC7\x11DUMMYSTRUCTNAME',b'\x00\x00\x15\x11Pointer'),(b'\x00\x00\x00\xC7\x00\x00\x00\x02$2',b'\x00\x00\x18\x11Offset',b'\x00\x00\x18\x11OffsetHigh'),(b'\x00\x00\x00\xC1\x00\x00\x00\x02$PROCESS_INFORMATION',b'\x00\x00\x15\x11hProcess',b'\x00\x00\x15\x11hThread',b'\x00\x00\x18\x11dwProcessId',b'\x00\x00\x18\x11dwThreadId'),(b'\x00\x00\x00\xC5\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x18\x11cb',b'\x00\x00\x13\x11lpReserved',b'\x00\x00\x13\x11lpDesktop',b'\x00\x00\x13\x11lpTitle',b'\x00\x00\x18\x11dwX',b'\x00\x00\x18\x11dwY',b'\x00\x00\x18\x11dwXSize',b'\x00\x00\x18\x11dwYSize',b'\x00\x00\x18\x11dwXCountChars',b'\x00\x00\x18\x11dwYCountChars',b'\x00\x00\x18\x11dwFillAttribute',b'\x00\x00\x18\x11dwFlags',b'\x00\x00\x7B\x11wShowWindow',b'\x00\x00\x7B\x11cbReserved2',b'\x00\x00\xC9\x11lpReserved2',b'\x00\x00\x15\x11hStdInput',b'\x00\x00\x15\x11hStdOutput',b'\x00\x00\x15\x11hStdError'),(b'\x00\x00\x00\xC0\x00\x00\x00\x02_
OVERLAPPED',b'\x00\x00\x18\x11Internal',b'\x00\x00\x18\x11InternalHigh',b'\x00\x00\xC8\x11DUMMYUNIONNAME',b'\x00\x00\x15\x11hEvent'),(b'\x00\x00\x00\xC3\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x15\x11hCompletionPort',b'\x00\x00\x31\x11Overlapped'),(b'\x00\x00\x00\xC4\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x18\x11nLength',b'\x00\x00\x15\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle')),
- _typenames =
(b'\x00\x00\x00\x31LPOVERLAPPED',b'\x00\x00\x00\x1CLPPROCESS_INFORMATION',b'\x00\x00\x00\xC2LPPostCallbackData',b'\x00\x00\x00\x83LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x1BLPSTARTUPINFO',b'\x00\x00\x00\xC0OVERLAPPED',b'\x00\x00\x00\xC1PROCESS_INFORMATION',b'\x00\x00\x00\x83PSECURITY_ATTRIBUTES',b'\x00\x00\x00\xC3PostCallbackData',b'\x00\x00\x00\xC4SECURITY_ATTRIBUTES',b'\x00\x00\x00\xC5STARTUPINFO',b'\x00\x00\x00\x27WAITORTIMERCALLBACK',b'\x00\x00\x00\x7Bwint_t'),
+ _types =
b'\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x09\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x19\x01\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\xCC\x03\x00\x00\x13\x11\x00\x00\xD1\x03\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x13\x11\x00\x00\x13\x11\x00\x00\xCB\x03\x00\x00\xC7\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x03\x00\x00\x1F\x11\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x1F\x11\x00\x00\x15\x11\x00\x00\xC2\x03\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\xC6\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x31\x11\x00\x00\x18\x03\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x
00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x31\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x31\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x1F\x11\x00\x00\x0A\x01\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x80\x03\x00\x00\x5E\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x5E\x11\x00\x00\x5E\x11\x00\x00\x1B\x11\x00\x00\x1C\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x3B\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x15\x11\x00\x00\x5E\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x02\x0F\x00\x00\x7B\x0D\x00\x00\x0
6\x01\x00\x00\x00\x0F\x00\x00\x7B\x0D\x00\x00\x00\x0F\x00\x00\x7B\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x15\x0D\x00\x00\xCA\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xCC\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x83\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x80\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x86\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x86\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x5E\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x83\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x8C\x11\x00\x00\x0A\x01\x00\x00\x0A\x01
\x00\x00\x83\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xD1\x0D\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xD1\x0D\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x02\x09\x00\x00\xC9\x03\x00\x00\x05\x09\x00\x00\x06\x09\x00\x00\x03\x09\x00\x00\x02\x01\x00\x00\x01\x09\x00\x00\x00\x09\x00\x00\xD0\x03\x00\x00\x04\x01\x00\x00\x00\x01',
+ _globals =
(b'\x00\x00\x2C\x23CancelIo',0,b'\x00\x00\x2F\x23CancelIoEx',0,b'\x00\x00\x2C\x23CloseHandle',0,b'\x00\x00\x2F\x23ConnectNamedPipe',0,b'\x00\x00\x82\x23CreateEventA',0,b'\x00\x00\x88\x23CreateEventW',0,b'\x00\x00\x8E\x23CreateFileA',0,b'\x00\x00\xB6\x23CreateFileW',0,b'\x00\x00\xA4\x23CreateIoCompletionPort',0,b'\x00\x00\x97\x23CreateNamedPipeA',0,b'\x00\x00\xAC\x23CreateNamedPipeW',0,b'\x00\x00\x1E\x23CreatePipe',0,b'\x00\x00\x12\x23CreateProcessA',0,b'\x00\x00\x5D\x23CreateProcessW',0,b'\x00\x00\x54\x23DuplicateHandle',0,b'\x00\x00\xAA\x23GetCurrentProcess',0,b'\x00\x00\x3D\x23GetExitCodeProcess',0,b'\x00\x00\x78\x23GetLastError',0,b'\x00\x00\x73\x23GetModuleFileNameW',0,b'\x00\x00\x33\x23GetOverlappedResult',0,b'\x00\x00\x41\x23GetQueuedCompletionStatus',0,b'\x00\x00\xA1\x23GetStdHandle',0,b'\x00\x00\x78\x23GetVersion',0,b'\x00\x00\x4E\x23PostQueuedCompletionStatus',0,b'\x00\x00\x24\x23RegisterWaitForSingleObject',0,b'\xFF\xFF\xFF\x1FSEM_FAILCRITICALERRORS',1,b'\xF
F\xFF\xFF\x1FSEM_NOALIGNMENTFAULTEXCEPT',4,b'\xFF\xFF\xFF\x1FSEM_NOGPFAULTERRORBOX',2,b'\xFF\xFF\xFF\x1FSEM_NOOPENFILEERRORBOX',32768,b'\x00\x00\x6C\x23SetErrorMode',0,b'\x00\x00\xBF\x23SetEvent',0,b'\x00\x00\x48\x23SetNamedPipeHandleState',0,b'\x00\x00\x39\x23TerminateProcess',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\x6F\x23WaitForSingleObject',0,b'\x00\x00\x69\x23_get_osfhandle',0,b'\x00\x00\x10\x23_getch',0,b'\x00\x00\x10\x23_getche',0,b'\x00\x00\x7D\x23_getwch',0,b'\x00\x00\x7D\x23_getwche',0,b'\x00\x00\x10\x23_kbhit',0,b'\x00\x00\x07\x23_locking',0,b'\x00\x00\x0C\x23_open_osfhandle',0,b'\x00\x00\x00\x23_putch',0,b'\x00\x00\x7F\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\x7A\x23_ungetwch',0),
+ _struct_unions =
((b'\x00\x00\x00\xCE\x00\x00\x00\x03$1',b'\x00\x00\xCD\x11DUMMYSTRUCTNAME',b'\x00\x00\x15\x11Pointer'),(b'\x00\x00\x00\xCD\x00\x00\x00\x02$2',b'\x00\x00\x18\x11Offset',b'\x00\x00\x18\x11OffsetHigh'),(b'\x00\x00\x00\xC7\x00\x00\x00\x02$PROCESS_INFORMATION',b'\x00\x00\x15\x11hProcess',b'\x00\x00\x15\x11hThread',b'\x00\x00\x18\x11dwProcessId',b'\x00\x00\x18\x11dwThreadId'),(b'\x00\x00\x00\xCB\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x18\x11cb',b'\x00\x00\x13\x11lpReserved',b'\x00\x00\x13\x11lpDesktop',b'\x00\x00\x13\x11lpTitle',b'\x00\x00\x18\x11dwX',b'\x00\x00\x18\x11dwY',b'\x00\x00\x18\x11dwXSize',b'\x00\x00\x18\x11dwYSize',b'\x00\x00\x18\x11dwXCountChars',b'\x00\x00\x18\x11dwYCountChars',b'\x00\x00\x18\x11dwFillAttribute',b'\x00\x00\x18\x11dwFlags',b'\x00\x00\x7B\x11wShowWindow',b'\x00\x00\x7B\x11cbReserved2',b'\x00\x00\xCF\x11lpReserved2',b'\x00\x00\x15\x11hStdInput',b'\x00\x00\x15\x11hStdOutput',b'\x00\x00\x15\x11hStdError'),(b'\x00\x00\x00\xC6\x00\x00\x00\x02_
OVERLAPPED',b'\x00\x00\x18\x11Internal',b'\x00\x00\x18\x11InternalHigh',b'\x00\x00\xCE\x11DUMMYUNIONNAME',b'\x00\x00\x15\x11hEvent'),(b'\x00\x00\x00\xC9\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x15\x11hCompletionPort',b'\x00\x00\x31\x11Overlapped'),(b'\x00\x00\x00\xCA\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x18\x11nLength',b'\x00\x00\x15\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle')),
+ _typenames =
(b'\x00\x00\x00\x31LPOVERLAPPED',b'\x00\x00\x00\x1CLPPROCESS_INFORMATION',b'\x00\x00\x00\xC8LPPostCallbackData',b'\x00\x00\x00\x83LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x1BLPSTARTUPINFO',b'\x00\x00\x00\xC6OVERLAPPED',b'\x00\x00\x00\xC7PROCESS_INFORMATION',b'\x00\x00\x00\x83PSECURITY_ATTRIBUTES',b'\x00\x00\x00\xC9PostCallbackData',b'\x00\x00\x00\xCASECURITY_ATTRIBUTES',b'\x00\x00\x00\xCBSTARTUPINFO',b'\x00\x00\x00\x27WAITORTIMERCALLBACK',b'\x00\x00\x00\x7Bwint_t'),
)
diff --git a/lib_pypy/_winapi.py b/lib_pypy/_winapi.py
--- a/lib_pypy/_winapi.py
+++ b/lib_pypy/_winapi.py
@@ -225,7 +225,7 @@
GENERIC_WRITE = 0x40000000
GENERIC_EXECUTE= 0x20000000
GENERIC_ALL = 0x10000000
-INVALID_HANDLE_VALUE = -1
+INVALID_HANDLE_VALUE = _int2handle(-1)
FILE_FLAG_WRITE_THROUGH = 0x80000000
FILE_FLAG_OVERLAPPED = 0x40000000
FILE_FLAG_NO_BUFFERING = 0x20000000
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit