Author: andrewjlawrence
Branch: winoverlapped
Changeset: r96455:80e8863b95ef
Date: 2019-04-13 15:11 +0100
http://bitbucket.org/pypy/pypy/changeset/80e8863b95ef/

Log:    Fixed Subprocess tests

diff --git a/lib_pypy/_overlapped.py b/lib_pypy/_overlapped.py
--- a/lib_pypy/_overlapped.py
+++ b/lib_pypy/_overlapped.py
@@ -87,6 +87,8 @@
 def _int2handle(val):
     return _ffi.cast("HANDLE", val)
 
+def _int2overlappedptr(val):
+    return _ffi.cast("OVERLAPPED*", val)
 
 def _handle2int(handle):
     return int(_ffi.cast("intptr_t", handle))
@@ -437,10 +439,10 @@
     
     @property
     def address(self):
-        return self.overlapped
+        return _handle2int(self.overlapped)
 
 def SetEvent(handle):
-    ret = _kernel32.SetEvent(handle)
+    ret = _kernel32.SetEvent(_int2handle(handle))
     if not ret:
        raise _winapi._WinError()
 
@@ -451,6 +453,7 @@
 
 def CreateEvent(eventattributes, manualreset, initialstate, name):
     event = _kernel32.CreateEventW(NULL, manualreset, initialstate, _Z(name))
+    event = _handle2int(event)
     if not event:
         raise _winapi._WinError()
     return event
@@ -466,8 +469,7 @@
                                               numberofconcurrentthreads)
     if result == _ffi.NULL:
         raise SetFromWindowsErr(0)
-    
-    return result
+    return _handle2int(result)
 
 def PostQueuedCompletionStatus(completionport, ms):
     raise _winapi._WinError()
@@ -475,6 +477,7 @@
 def GetQueuedCompletionStatus(completionport, milliseconds):
     numberofbytes = _ffi.new('DWORD[1]', [0])
     completionkey  = _ffi.new('ULONG**')
+    completionport = _int2handle(completionport)
 
     if completionport is None:
         raise _winapi._WinError()
@@ -495,20 +498,21 @@
             return None
         return SetFromWindowsErr(err)
 
-    return (err, numberofbytes, _handle2int(completionkey[0]), 
_ffi.addressof(overlapped[0][0]))
+    return (err, numberofbytes, _handle2int(completionkey[0]), 
_handle2int(_ffi.addressof(overlapped[0][0])))
 
 @_ffi.callback("void(void*, int)")
 def post_to_queue_callback(lpparameter, timerorwaitfired):
-    pdata = _ffi.cast("PostCallbackData *", lpparameter)
+    pdata = _ffi.cast("PostCallbackData*", lpparameter)
     ret = _kernel32.PostQueuedCompletionStatus(pdata.hCompletionPort, 
timerorwaitfired, _ffi.cast("ULONG_PTR",0), pdata.Overlapped)
     result = False
+    _winapi.free(pdata)
 
 
 def RegisterWaitWithQueue(object, completionport, ovaddress, miliseconds):
-    data = _ffi.new('PostCallbackData*')
+    data = _ffi.cast('PostCallbackData*', _winapi.malloc( 
_ffi.sizeof("PostCallbackData")))
     newwaitobject = _ffi.new("HANDLE*")
-    data[0].hCompletionPort = completionport
-    data[0].Overlapped = ovaddress
+    data[0].hCompletionPort = _int2handle(completionport)
+    data[0].Overlapped = _int2overlappedptr(ovaddress)
     ret = _kernel32.RegisterWaitForSingleObject(newwaitobject,
                                                 _int2handle(object),
                                                 
_ffi.cast("WAITORTIMERCALLBACK",post_to_queue_callback),
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
@@ -152,6 +152,10 @@
 #define WT_EXECUTEINWAITTHREAD 0x00000004
 #define WT_EXECUTEONLYONCE 0x00000008
 
+HANDLE GetProcessHeap();
+LPVOID HeapAlloc(HANDLE, DWORD, SIZE_T);
+BOOL HeapFree(HANDLE, DWORD, LPVOID);
+
 """)
 
 # -------------------- Win Sock 2 ----------------------
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\x01\x5C\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x36\x03\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x1B\x03\x00\x01\x2F\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x01\x40\x03\x00\x00\x22\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x22\x11\x00\x00\x22\x11\x00\x01\x3B\x03\x00\x01\x30\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x03\x00\x00\x2E\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x2E\x11\x00\x00\x11\x11\x00\x01\x26\x03\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x
 
00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1D\x11\x00\x00\x1C\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1D\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x1D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x3C\x03\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x1C\x11\x00\x00\x1D\x11\x00\x01\x21\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x59\x11\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x0A\x01\x00\x00\x1D\x11\x00\x00\x5E\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1C\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1C\x11\x00\x00\x1C\x03\x00\x00\x1D\x03\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x1C\x11\x00\x00\x1
 
C\x11\x00\x00\x1C\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x1D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x1D\x11\x00\x00\x5E\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x1D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x2E\x11\x00\x00\x0A\x01\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x5C\x03\x00\x00\x0A\x01\x00\x00\x1C\x11\x00\x00\x1D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xDD\x03\x00\x00\x07\x01\x00\x01\x3F\x03\x00\x00\x15\x11\x00\x00\x01\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xAE\x11\x00\x00\xAE\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01
 
\x00\x00\x0A\x01\x00\x00\xAE\x11\x00\x00\xAE\x11\x00\x00\x2A\x11\x00\x00\x2B\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x6B\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x1B\x0D\x00\x00\x0A\x01\x00\x00\x2E\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x1B\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x1B\x0D\x00\x00\x11\x11\x00\x00\xAE\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x1B\x0D\x00\x00\x02\x0F\x00\x00\xD8\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\xD8\x0D\x00\x00\x00\x0F\x00\x00\xD8\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x01\x35\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x01\x40\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xE0\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xDD\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xE3\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xE0\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xE3\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\xE0\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xAE\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\xE0\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xE9\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xE0\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x01\x5C\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x01\x5C\x0D\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x0C\x09\x00\x01\x2C\x03\x00\x00\x13\x09\x00\x01\x2E\x03\x00\x00\x14\x09\x00\x00\x0D\x09\x00\x00\x09\x09\x00\x01\x32\x03\x00\x00\x0E\x09\x00\x01\x34\x03\x00\x00\x0A\x09\x00\x00\x0F\x09\x00\x00\x
 
15\x09\x00\x01\x3A\x03\x00\x01\x39\x03\x00\x00\x17\x09\x00\x00\x16\x09\x00\x00\x0B\x09\x00\x00\x10\x09\x00\x01\x3E\x03\x00\x00\x11\x09\x00\x00\x12\x09\x00\x00\x02\x01\x00\x01\x40\x05\x00\x00\x00\x0E\x00\x01\x40\x05\x00\x00\x00\x08\x00\x00\x48\x03\x00\x00\x4E\x03\x00\x00\x93\x03\x00\x00\x05\x01\x00\x00\x01\x09\x00\x00\x04\x09\x00\x00\x07\x09\x00\x00\x08\x09\x00\x00\x00\x09\x00\x00\x02\x09\x00\x00\x03\x09\x00\x00\x05\x09\x00\x00\x06\x09\x00\x01\x53\x03\x00\x00\x04\x01\x00\x01\x53\x05\x00\x00\x00\x10\x00\x01\x53\x05\x00\x00\x00\x08\x00\x00\x1B\x05\x00\x00\x00\x07\x00\x00\xD8\x05\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\xDD\x05\x00\x00\x01\x00',
-    _globals = 
(b'\x00\x00\x3B\x23CancelIo',0,b'\x00\x00\x3E\x23CancelIoEx',0,b'\x00\x00\x3B\x23CloseHandle',0,b'\x00\x00\x3E\x23ConnectNamedPipe',0,b'\x00\x00\xDF\x23CreateEventA',0,b'\x00\x00\xE5\x23CreateEventW',0,b'\x00\x00\xEB\x23CreateFileA',0,b'\x00\x01\x18\x23CreateFileW',0,b'\x00\x01\x06\x23CreateIoCompletionPort',0,b'\x00\x00\xF4\x23CreateNamedPipeA',0,b'\x00\x01\x0E\x23CreateNamedPipeW',0,b'\x00\x00\x2D\x23CreatePipe',0,b'\x00\x00\x21\x23CreateProcessA',0,b'\x00\x00\xB4\x23CreateProcessW',0,b'\x00\x00\x9D\x23DuplicateHandle',0,b'\x00\x01\x0C\x23GetCurrentProcess',0,b'\x00\x00\x6D\x23GetExitCodeProcess',0,b'\x00\x00\xD5\x23GetLastError',0,b'\x00\x00\xD0\x23GetModuleFileNameW',0,b'\x00\x00\x42\x23GetOverlappedResult',0,b'\x00\x00\x71\x23GetQueuedCompletionStatus',0,b'\x00\x01\x03\x23GetStdHandle',0,b'\x00\x00\xD5\x23GetVersion',0,b'\xFF\xFF\xFF\x1FMAX_PROTOCOL_CHAIN',7,b'\x00\x00\x7E\x23PostQueuedCompletionStatus',0,b'\x00\x00\x18\x23ReadFile',0,b'\x00\x00\x33\x23RegisterWa
 
itForSingleObject',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\xC3\x23SetErrorMode',0,b'\x00\x00\x3B\x23SetEvent',0,b'\x00\x00\x78\x23SetNamedPipeHandleState',0,b'\x00\x00\x69\x23TerminateProcess',0,b'\x00\x00\x3B\x23UnregisterWait',0,b'\x00\x00\x8F\x23UnregisterWaitEx',0,b'\x00\x00\x84\x23WSAIoctl',0,b'\xFF\xFF\xFF\x1FWSAPROTOCOL_LEN',255,b'\x00\x00\x57\x23WSARecv',0,b'\x00\x00\x60\x23WSASend',0,b'\x00\x00\xAD\x23WSAStringToAddressW',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\xC6\x23WaitForMultipleObjects',0,b'\x00\x00\xCC\x23WaitForSingleObject',0,b'\x00\x00\xA6\x23WriteFile',0,b'\x00\x00\xC0\x23_get_osfhandle',0,b'\x00\x00\x1F\x23_getch',0,b'\x00\x00\x1F\x23_getche',0,b'\x00\x00\xDA\x23_getwch',0,b'\x00\x00\xDA\x23_getwche',0,b'\x00\x00\x1F\x23_kbhit',0,b'\x00\x00\x07\x23_locki
 
ng',0,b'\x00\x00\x0C\x23_open_osfhandle',0,b'\x00\x00\x00\x23_putch',0,b'\x00\x00\xDC\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\xD7\x23_ungetwch',0,b'\x00\x00\x13\x23bind',0,b'\x00\x00\x10\x23closesocket',0,b'\x00\x00\xD7\x23htons',0,b'\x00\x00\xFE\x23socket',0),
-    _struct_unions = 
((b'\x00\x00\x01\x4D\x00\x00\x00\x03$1',b'\x00\x01\x49\x11DUMMYSTRUCTNAME',b'\x00\x00\x11\x11Pointer'),(b'\x00\x00\x01\x49\x00\x00\x00\x02$2',b'\x00\x00\x1B\x11Offset',b'\x00\x00\x1B\x11OffsetHigh'),(b'\x00\x00\x01\x4E\x00\x00\x00\x03$3',b'\x00\x01\x54\x11Byte',b'\x00\x01\x5A\x11Word'),(b'\x00\x00\x01\x4F\x00\x00\x00\x01$4',b'\x00\x01\x4A\x11',b'\x00\x00\x1B\x11Value'),(b'\x00\x00\x01\x4A\x00\x00\x00\x02$5',b'\x00\x00\x1B\x13\x00\x00\x00\x1CZone',b'\x00\x00\x1B\x13\x00\x00\x00\x04Level'),(b'\x00\x00\x01\x50\x00\x00\x00\x03$6',b'\x00\x00\x1B\x11sin6_scope_id',b'\x00\x01\x34\x11sin6_scope_struct'),(b'\x00\x00\x01\x51\x00\x00\x00\x03$7',b'\x00\x01\x4B\x11S_un_b',b'\x00\x01\x4C\x11S_un_w',b'\x00\x00\x1B\x11S_addr'),(b'\x00\x00\x01\x4B\x00\x00\x00\x02$8',b'\x00\x01\x53\x11s_b1',b'\x00\x01\x53\x11s_b2',b'\x00\x01\x53\x11s_b3',b'\x00\x01\x53\x11s_b4'),(b'\x00\x00\x01\x4C\x00\x00\x00\x02$9',b'\x00\x00\xD8\x11s_w1',b'\x00\x00\xD8\x11s_w2'),(b'\x00\x00\x01\x30\x00\x00\x00
 
\x02$PROCESS_INFORMATION',b'\x00\x00\x11\x11hProcess',b'\x00\x00\x11\x11hThread',b'\x00\x00\x1B\x11dwProcessId',b'\x00\x00\x1B\x11dwThreadId'),(b'\x00\x00\x01\x34\x00\x00\x00\x00$SCOPE_ID',b'\x00\x01\x4F\x11'),(b'\x00\x00\x01\x3B\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x1B\x11cb',b'\x00\x00\x22\x11lpReserved',b'\x00\x00\x22\x11lpDesktop',b'\x00\x00\x22\x11lpTitle',b'\x00\x00\x1B\x11dwX',b'\x00\x00\x1B\x11dwY',b'\x00\x00\x1B\x11dwXSize',b'\x00\x00\x1B\x11dwYSize',b'\x00\x00\x1B\x11dwXCountChars',b'\x00\x00\x1B\x11dwYCountChars',b'\x00\x00\x1B\x11dwFillAttribute',b'\x00\x00\x1B\x11dwFlags',b'\x00\x00\xD8\x11wShowWindow',b'\x00\x00\xD8\x11cbReserved2',b'\x00\x01\x52\x11lpReserved2',b'\x00\x00\x11\x11hStdInput',b'\x00\x00\x11\x11hStdOutput',b'\x00\x00\x11\x11hStdError'),(b'\x00\x00\x01\x2A\x00\x00\x00\x02_GUID',b'\x00\x00\x1B\x11Data1',b'\x00\x00\xD8\x11Data2',b'\x00\x00\xD8\x11Data3',b'\x00\x01\x56\x11Data4'),(b'\x00\x00\x01\x2F\x00\x00\x00\x02_OVERLAPPED',b'\x00\x00\x1B\x11Internal',b
 
'\x00\x00\x1B\x11InternalHigh',b'\x00\x01\x4D\x11DUMMYUNIONNAME',b'\x00\x00\x11\x11hEvent'),(b'\x00\x00\x01\x32\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x11\x11hCompletionPort',b'\x00\x00\x1D\x11Overlapped'),(b'\x00\x00\x01\x35\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x1B\x11nLength',b'\x00\x00\x11\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x01\x3C\x00\x00\x00\x02_WSABUF',b'\x00\x00\x1B\x11len',b'\x00\x00\x22\x11buf'),(b'\x00\x00\x01\x3E\x00\x00\x00\x02_WSAPROTOCOLCHAIN',b'\x00\x00\x01\x11ChainLen',b'\x00\x01\x58\x11ChainEntries'),(b'\x00\x00\x01\x3F\x00\x00\x00\x02_WSAPROTOCOL_INFOW',b'\x00\x00\x1B\x11dwServiceFlags1',b'\x00\x00\x1B\x11dwServiceFlags2',b'\x00\x00\x1B\x11dwServiceFlags3',b'\x00\x00\x1B\x11dwServiceFlags4',b'\x00\x00\x1B\x11dwProviderFlags',b'\x00\x01\x2A\x11ProviderId',b'\x00\x00\x1B\x11dwCatalogEntryId',b'\x00\x01\x3E\x11ProtocolChain',b'\x00\x00\x01\x11iVersion',b'\x00\x00\x01\x11iAddressFamily',b'\x00\x00\x01\x11iMaxSockAdd
 
r',b'\x00\x00\x01\x11iMinSockAddr',b'\x00\x00\x01\x11iSocketType',b'\x00\x00\x01\x11iProtocol',b'\x00\x00\x01\x11iProtocolMaxOffset',b'\x00\x00\x01\x11iNetworkByteOrder',b'\x00\x00\x01\x11iSecurityScheme',b'\x00\x00\x1B\x11dwMessageSize',b'\x00\x00\x1B\x11dwProviderReserved',b'\x00\x01\x5D\x11szProtocol'),(b'\x00\x00\x01\x2C\x00\x00\x00\x02in6_addr',b'\x00\x01\x4E\x11u'),(b'\x00\x00\x01\x2E\x00\x00\x00\x02in_addr',b'\x00\x01\x51\x11S_un'),(b'\x00\x00\x01\x36\x00\x00\x00\x02sockaddr',b'\x00\x00\xD8\x11sa_family',b'\x00\x01\x41\x11sa_data'),(b'\x00\x00\x01\x3A\x00\x00\x00\x02sockaddr_in',b'\x00\x01\x48\x11sin_family',b'\x00\x00\xD8\x11sin_port',b'\x00\x01\x2E\x11sin_addr',b'\x00\x01\x43\x11sin_zero'),(b'\x00\x00\x01\x39\x00\x00\x00\x00sockaddr_in6',b'\x00\x00\xD8\x11sin6_family',b'\x00\x00\xD8\x11sin6_port',b'\x00\x00\x1B\x11sin6_flowinfo',b'\x00\x01\x2C\x11sin6_addr',b'\x00\x01\x50\x11')),
-    _typenames = 
(b'\x00\x00\x00\xD8ADDRESS_FAMILY',b'\x00\x00\x01\x47AcceptExPtr',b'\x00\x00\x01\x46ConnectExPtr',b'\x00\x00\x01\x45DisconnectExPtr',b'\x00\x00\x01\x2AGUID',b'\x00\x00\x01\x2CIN6_ADDR',b'\x00\x00\x01\x2EINADDR',b'\x00\x00\x01\x45LPFN_DISCONNECTEX',b'\x00\x00\x01\x2BLPIN6_ADDR',b'\x00\x00\x00\x1DLPOVERLAPPED',b'\x00\x00\x00\x5ELPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x2BLPPROCESS_INFORMATION',b'\x00\x00\x01\x31LPPostCallbackData',b'\x00\x00\x00\xE0LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x15LPSOCKADDR',b'\x00\x00\x01\x37LPSOCKADDR_IN',b'\x00\x00\x01\x38LPSOCKADDR_IN6_LH',b'\x00\x00\x00\x2ALPSTARTUPINFO',b'\x00\x00\x00\x59LPWSABUF',b'\x00\x00\x01\x3DLPWSAPROTOCOLCHAIN',b'\x00\x00\x00\xB0LPWSAPROTOCOL_INFOW',b'\x00\x00\x01\x2FOVERLAPPED',b'\x00\x00\x01\x2BPIN6_ADDR',b'\x00\x00\x01\x2DPINADDR',b'\x00\x00\x01\x30PROCESS_INFORMATION',b'\x00\x00\x01\x33PSCOPE_ID',b'\x00\x00\x00\xE0PSECURITY_ATTRIBUTES',b'\x00\x00\x00\x15PSOCKADDR',b'\x00\x00\x01\x37PSOCKADDR_IN',b'\x00
 
\x00\x01\x38PSOCKADDR_IN6_LH',b'\x00\x00\x01\x32PostCallbackData',b'\x00\x00\x01\x34SCOPE_ID',b'\x00\x00\x01\x35SECURITY_ATTRIBUTES',b'\x00\x00\x01\x36SOCKADDR',b'\x00\x00\x01\x3ASOCKADDR_IN',b'\x00\x00\x01\x39SOCKADDR_IN6_LH',b'\x00\x00\x00\x11SOCKET',b'\x00\x00\x01\x3BSTARTUPINFO',b'\x00\x00\x00\x36WAITORTIMERCALLBACK',b'\x00\x00\x01\x3CWSABUF',b'\x00\x00\x01\x3EWSAPROTOCOLCHAIN',b'\x00\x00\x01\x3FWSAPROTOCOL_INFOW',b'\x00\x00\x00\xD8wint_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\x01\x68\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x42\x03\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x1A\x03\x00\x01\x3B\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x01\x4C\x03\x00\x00\x27\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x27\x11\x00\x00\x27\x11\x00\x01\x47\x03\x00\x01\x3C\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x03\x00\x00\x33\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x33\x11\x00\x00\x11\x11\x00\x01\x32\x03\x00\x00\x11\x11\x00\x
 
00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x22\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x22\x11\x00\x00\x21\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x22\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x22\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x48\x03\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x21\x11\x00\x00\x22\x11\x00\x01\x2D\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x5E\x11\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x0A\x01\x00\x00\x22\x11\x00\x00\x63\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x21\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x21\x11\x00\x00\x21\x03\x00\x00\x22\x03\x00\x00\x0
 
A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x21\x11\x00\x00\x21\x11\x00\x00\x21\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x22\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x22\x11\x00\x00\x63\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x22\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x33\x11\x00\x00\x0A\x01\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x68\x03\x00\x00\x0A\x01\x00\x00\x21\x11\x00\x00\x22\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xE2\x03\x00\x00\x07\x01\x00\x01\x4B\x03\x00\x00\x15\x11\x00\x00\x01\x03\x00\x00\x02\x0F\x00\x00\x01\x0D
 
\x00\x00\xB3\x11\x00\x00\xB3\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\xB3\x11\x00\x00\xB3\x11\x00\x00\x2F\x11\x00\x00\x30\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x70\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x1A\x0D\x00\x00\x0A\x01\x00\x00\x33\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x1A\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x1A\x0D\x00\x00\x11\x11\x00\x00\xB3\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x1A\x0D\x00\x00\x02\x0F\x00\x00\xDD\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\xDD\x0D\x00\x00\x00\x0F\x00\x00\xDD\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x01\x41\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x01\x4C\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xEC\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xE2\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\
 
x00\xEF\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xEC\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xEF\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\xEC\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xB3\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\xEC\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xF5\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xEC\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x01\x68\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x01\x68\x0D\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x
 
0C\x09\x00\x01\x38\x03\x00\x00\x13\x09\x00\x01\x3A\x03\x00\x00\x14\x09\x00\x00\x0D\x09\x00\x00\x09\x09\x00\x01\x3E\x03\x00\x00\x0E\x09\x00\x01\x40\x03\x00\x00\x0A\x09\x00\x00\x0F\x09\x00\x00\x15\x09\x00\x01\x46\x03\x00\x01\x45\x03\x00\x00\x17\x09\x00\x00\x16\x09\x00\x00\x0B\x09\x00\x00\x10\x09\x00\x01\x4A\x03\x00\x00\x11\x09\x00\x00\x12\x09\x00\x00\x02\x01\x00\x01\x4C\x05\x00\x00\x00\x0E\x00\x01\x4C\x05\x00\x00\x00\x08\x00\x00\x4D\x03\x00\x00\x53\x03\x00\x00\x98\x03\x00\x00\x05\x01\x00\x00\x01\x09\x00\x00\x04\x09\x00\x00\x07\x09\x00\x00\x08\x09\x00\x00\x00\x09\x00\x00\x02\x09\x00\x00\x03\x09\x00\x00\x05\x09\x00\x00\x06\x09\x00\x01\x5F\x03\x00\x00\x04\x01\x00\x01\x5F\x05\x00\x00\x00\x10\x00\x01\x5F\x05\x00\x00\x00\x08\x00\x00\x1A\x05\x00\x00\x00\x07\x00\x00\xDD\x05\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\xE2\x05\x00\x00\x01\x00',
+    _globals = 
(b'\x00\x00\x40\x23CancelIo',0,b'\x00\x00\x43\x23CancelIoEx',0,b'\x00\x00\x40\x23CloseHandle',0,b'\x00\x00\x43\x23ConnectNamedPipe',0,b'\x00\x00\xEB\x23CreateEventA',0,b'\x00\x00\xF1\x23CreateEventW',0,b'\x00\x00\xF7\x23CreateFileA',0,b'\x00\x01\x24\x23CreateFileW',0,b'\x00\x01\x12\x23CreateIoCompletionPort',0,b'\x00\x01\x00\x23CreateNamedPipeA',0,b'\x00\x01\x1A\x23CreateNamedPipeW',0,b'\x00\x00\x32\x23CreatePipe',0,b'\x00\x00\x26\x23CreateProcessA',0,b'\x00\x00\xB9\x23CreateProcessW',0,b'\x00\x00\xA2\x23DuplicateHandle',0,b'\x00\x01\x18\x23GetCurrentProcess',0,b'\x00\x00\x72\x23GetExitCodeProcess',0,b'\x00\x00\xDA\x23GetLastError',0,b'\x00\x00\xD5\x23GetModuleFileNameW',0,b'\x00\x00\x47\x23GetOverlappedResult',0,b'\x00\x00\xE9\x23GetProcessHeap',0,b'\x00\x00\x76\x23GetQueuedCompletionStatus',0,b'\x00\x01\x0F\x23GetStdHandle',0,b'\x00\x00\xDA\x23GetVersion',0,b'\x00\x00\xE4\x23HeapAlloc',0,b'\x00\x00\x18\x23HeapFree',0,b'\xFF\xFF\xFF\x1FMAX_PROTOCOL_CHAIN',7,b'\x00\x0
 
0\x83\x23PostQueuedCompletionStatus',0,b'\x00\x00\x1D\x23ReadFile',0,b'\x00\x00\x38\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\xC8\x23SetErrorMode',0,b'\x00\x00\x40\x23SetEvent',0,b'\x00\x00\x7D\x23SetNamedPipeHandleState',0,b'\x00\x00\x6E\x23TerminateProcess',0,b'\x00\x00\x40\x23UnregisterWait',0,b'\x00\x00\x94\x23UnregisterWaitEx',0,b'\x00\x00\x89\x23WSAIoctl',0,b'\xFF\xFF\xFF\x1FWSAPROTOCOL_LEN',255,b'\x00\x00\x5C\x23WSARecv',0,b'\x00\x00\x65\x23WSASend',0,b'\x00\x00\xB2\x23WSAStringToAddressW',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\xCB\x23WaitForMultipleObjects',0,b'\x00\x00\xD1\x23WaitForSingleObject',0,b'\x00\x00\xAB\x23WriteFile',0,b'\x00\x00\xC5\x23_get_osfhandle',0,b'\x00\x00\x24\x23_getch',0,b'\x00\x00\x24\x23_getche',0,b'\x00\x00\xDF
 
\x23_getwch',0,b'\x00\x00\xDF\x23_getwche',0,b'\x00\x00\x24\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\xE1\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\xDC\x23_ungetwch',0,b'\x00\x00\x13\x23bind',0,b'\x00\x00\x10\x23closesocket',0,b'\x00\x00\xDC\x23htons',0,b'\x00\x01\x0A\x23socket',0),
+    _struct_unions = 
((b'\x00\x00\x01\x59\x00\x00\x00\x03$1',b'\x00\x01\x55\x11DUMMYSTRUCTNAME',b'\x00\x00\x11\x11Pointer'),(b'\x00\x00\x01\x55\x00\x00\x00\x02$2',b'\x00\x00\x1A\x11Offset',b'\x00\x00\x1A\x11OffsetHigh'),(b'\x00\x00\x01\x5A\x00\x00\x00\x03$3',b'\x00\x01\x60\x11Byte',b'\x00\x01\x66\x11Word'),(b'\x00\x00\x01\x5B\x00\x00\x00\x01$4',b'\x00\x01\x56\x11',b'\x00\x00\x1A\x11Value'),(b'\x00\x00\x01\x56\x00\x00\x00\x02$5',b'\x00\x00\x1A\x13\x00\x00\x00\x1CZone',b'\x00\x00\x1A\x13\x00\x00\x00\x04Level'),(b'\x00\x00\x01\x5C\x00\x00\x00\x03$6',b'\x00\x00\x1A\x11sin6_scope_id',b'\x00\x01\x40\x11sin6_scope_struct'),(b'\x00\x00\x01\x5D\x00\x00\x00\x03$7',b'\x00\x01\x57\x11S_un_b',b'\x00\x01\x58\x11S_un_w',b'\x00\x00\x1A\x11S_addr'),(b'\x00\x00\x01\x57\x00\x00\x00\x02$8',b'\x00\x01\x5F\x11s_b1',b'\x00\x01\x5F\x11s_b2',b'\x00\x01\x5F\x11s_b3',b'\x00\x01\x5F\x11s_b4'),(b'\x00\x00\x01\x58\x00\x00\x00\x02$9',b'\x00\x00\xDD\x11s_w1',b'\x00\x00\xDD\x11s_w2'),(b'\x00\x00\x01\x3C\x00\x00\x00
 
\x02$PROCESS_INFORMATION',b'\x00\x00\x11\x11hProcess',b'\x00\x00\x11\x11hThread',b'\x00\x00\x1A\x11dwProcessId',b'\x00\x00\x1A\x11dwThreadId'),(b'\x00\x00\x01\x40\x00\x00\x00\x00$SCOPE_ID',b'\x00\x01\x5B\x11'),(b'\x00\x00\x01\x47\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x1A\x11cb',b'\x00\x00\x27\x11lpReserved',b'\x00\x00\x27\x11lpDesktop',b'\x00\x00\x27\x11lpTitle',b'\x00\x00\x1A\x11dwX',b'\x00\x00\x1A\x11dwY',b'\x00\x00\x1A\x11dwXSize',b'\x00\x00\x1A\x11dwYSize',b'\x00\x00\x1A\x11dwXCountChars',b'\x00\x00\x1A\x11dwYCountChars',b'\x00\x00\x1A\x11dwFillAttribute',b'\x00\x00\x1A\x11dwFlags',b'\x00\x00\xDD\x11wShowWindow',b'\x00\x00\xDD\x11cbReserved2',b'\x00\x01\x5E\x11lpReserved2',b'\x00\x00\x11\x11hStdInput',b'\x00\x00\x11\x11hStdOutput',b'\x00\x00\x11\x11hStdError'),(b'\x00\x00\x01\x36\x00\x00\x00\x02_GUID',b'\x00\x00\x1A\x11Data1',b'\x00\x00\xDD\x11Data2',b'\x00\x00\xDD\x11Data3',b'\x00\x01\x62\x11Data4'),(b'\x00\x00\x01\x3B\x00\x00\x00\x02_OVERLAPPED',b'\x00\x00\x1A\x11Internal',b
 
'\x00\x00\x1A\x11InternalHigh',b'\x00\x01\x59\x11DUMMYUNIONNAME',b'\x00\x00\x11\x11hEvent'),(b'\x00\x00\x01\x3E\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x11\x11hCompletionPort',b'\x00\x00\x22\x11Overlapped'),(b'\x00\x00\x01\x41\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x1A\x11nLength',b'\x00\x00\x11\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x01\x48\x00\x00\x00\x02_WSABUF',b'\x00\x00\x1A\x11len',b'\x00\x00\x27\x11buf'),(b'\x00\x00\x01\x4A\x00\x00\x00\x02_WSAPROTOCOLCHAIN',b'\x00\x00\x01\x11ChainLen',b'\x00\x01\x64\x11ChainEntries'),(b'\x00\x00\x01\x4B\x00\x00\x00\x02_WSAPROTOCOL_INFOW',b'\x00\x00\x1A\x11dwServiceFlags1',b'\x00\x00\x1A\x11dwServiceFlags2',b'\x00\x00\x1A\x11dwServiceFlags3',b'\x00\x00\x1A\x11dwServiceFlags4',b'\x00\x00\x1A\x11dwProviderFlags',b'\x00\x01\x36\x11ProviderId',b'\x00\x00\x1A\x11dwCatalogEntryId',b'\x00\x01\x4A\x11ProtocolChain',b'\x00\x00\x01\x11iVersion',b'\x00\x00\x01\x11iAddressFamily',b'\x00\x00\x01\x11iMaxSockAdd
 
r',b'\x00\x00\x01\x11iMinSockAddr',b'\x00\x00\x01\x11iSocketType',b'\x00\x00\x01\x11iProtocol',b'\x00\x00\x01\x11iProtocolMaxOffset',b'\x00\x00\x01\x11iNetworkByteOrder',b'\x00\x00\x01\x11iSecurityScheme',b'\x00\x00\x1A\x11dwMessageSize',b'\x00\x00\x1A\x11dwProviderReserved',b'\x00\x01\x69\x11szProtocol'),(b'\x00\x00\x01\x38\x00\x00\x00\x02in6_addr',b'\x00\x01\x5A\x11u'),(b'\x00\x00\x01\x3A\x00\x00\x00\x02in_addr',b'\x00\x01\x5D\x11S_un'),(b'\x00\x00\x01\x42\x00\x00\x00\x02sockaddr',b'\x00\x00\xDD\x11sa_family',b'\x00\x01\x4D\x11sa_data'),(b'\x00\x00\x01\x46\x00\x00\x00\x02sockaddr_in',b'\x00\x01\x54\x11sin_family',b'\x00\x00\xDD\x11sin_port',b'\x00\x01\x3A\x11sin_addr',b'\x00\x01\x4F\x11sin_zero'),(b'\x00\x00\x01\x45\x00\x00\x00\x00sockaddr_in6',b'\x00\x00\xDD\x11sin6_family',b'\x00\x00\xDD\x11sin6_port',b'\x00\x00\x1A\x11sin6_flowinfo',b'\x00\x01\x38\x11sin6_addr',b'\x00\x01\x5C\x11')),
+    _typenames = 
(b'\x00\x00\x00\xDDADDRESS_FAMILY',b'\x00\x00\x01\x53AcceptExPtr',b'\x00\x00\x01\x52ConnectExPtr',b'\x00\x00\x01\x51DisconnectExPtr',b'\x00\x00\x01\x36GUID',b'\x00\x00\x01\x38IN6_ADDR',b'\x00\x00\x01\x3AINADDR',b'\x00\x00\x01\x51LPFN_DISCONNECTEX',b'\x00\x00\x01\x37LPIN6_ADDR',b'\x00\x00\x00\x22LPOVERLAPPED',b'\x00\x00\x00\x63LPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x30LPPROCESS_INFORMATION',b'\x00\x00\x01\x3DLPPostCallbackData',b'\x00\x00\x00\xECLPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x15LPSOCKADDR',b'\x00\x00\x01\x43LPSOCKADDR_IN',b'\x00\x00\x01\x44LPSOCKADDR_IN6_LH',b'\x00\x00\x00\x2FLPSTARTUPINFO',b'\x00\x00\x00\x5ELPWSABUF',b'\x00\x00\x01\x49LPWSAPROTOCOLCHAIN',b'\x00\x00\x00\xB5LPWSAPROTOCOL_INFOW',b'\x00\x00\x01\x3BOVERLAPPED',b'\x00\x00\x01\x37PIN6_ADDR',b'\x00\x00\x01\x39PINADDR',b'\x00\x00\x01\x3CPROCESS_INFORMATION',b'\x00\x00\x01\x3FPSCOPE_ID',b'\x00\x00\x00\xECPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x15PSOCKADDR',b'\x00\x00\x01\x43PSOCKADDR_IN',b'\x00
 
\x00\x01\x44PSOCKADDR_IN6_LH',b'\x00\x00\x01\x3EPostCallbackData',b'\x00\x00\x01\x40SCOPE_ID',b'\x00\x00\x01\x41SECURITY_ATTRIBUTES',b'\x00\x00\x01\x42SOCKADDR',b'\x00\x00\x01\x46SOCKADDR_IN',b'\x00\x00\x01\x45SOCKADDR_IN6_LH',b'\x00\x00\x00\x11SOCKET',b'\x00\x00\x01\x47STARTUPINFO',b'\x00\x00\x00\x3BWAITORTIMERCALLBACK',b'\x00\x00\x01\x48WSABUF',b'\x00\x00\x01\x4AWSAPROTOCOLCHAIN',b'\x00\x00\x01\x4BWSAPROTOCOL_INFOW',b'\x00\x00\x00\xDDwint_t'),
 )
diff --git a/lib_pypy/_winapi.py b/lib_pypy/_winapi.py
--- a/lib_pypy/_winapi.py
+++ b/lib_pypy/_winapi.py
@@ -106,7 +106,7 @@
                 raise RuntimeError('deleting an overlapped struct with a 
pending operation not supported')
 
     @property
-    def event(self): 
+    def event(self):
         xxx
         return None
 
@@ -288,6 +288,13 @@
         raise _WinError()
     return _ffi.string(buf)
 
+ZERO_MEMORY = 0x00000008
+
+def malloc(size):
+    return _kernel32.HeapAlloc(_kernel32.GetProcessHeap(),ZERO_MEMORY,size)
+
+def free(voidptr):
+    _kernel32.HeapFree(_kernel32.GetProcessHeap(),0, voidptr)
 
 # #define macros from WinBase.h and elsewhere
 STD_INPUT_HANDLE = -10
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to