[pypy-commit] pypy winoverlapped: Added initialization of dynamically loaded functions.

andrewjlawrence pypy.commits at gmail.com
Sun Mar 17 09:35:31 EDT 2019


Author: andrewjlawrence
Branch: winoverlapped
Changeset: r96332:ce42458cb91d
Date: 2019-03-17 13:33 +0000
http://bitbucket.org/pypy/pypy/changeset/ce42458cb91d/

Log:	Added initialization of dynamically loaded functions.

diff --git a/lib_pypy/_overlapped.py b/lib_pypy/_overlapped.py
--- a/lib_pypy/_overlapped.py
+++ b/lib_pypy/_overlapped.py
@@ -52,12 +52,26 @@
 WSAID_ACCEPTEX[0].Data3 = 0x11cf
 WSAID_ACCEPTEX[0].Data4 = [0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]
 
+
+WSAID_CONNECTEX  = _ffi.new("GUID[1]")
+WSAID_CONNECTEX[0].Data1 = 0x25a207b9
+WSAID_CONNECTEX[0].Data2 = 0xddf3
+WSAID_CONNECTEX[0].Data3 = 0x4660
+WSAID_CONNECTEX[0].Data4 = [0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]
+
+WSAID_DISCONNECTEX  = _ffi.new("GUID[1]")
+WSAID_DISCONNECTEX[0].Data1 = 0x7fda2e11
+WSAID_DISCONNECTEX[0].Data2 = 0x8630
+WSAID_DISCONNECTEX[0].Data3 = 0x436f
+WSAID_DISCONNECTEX[0].Data4 = [0xa0,0x31,0xf5,0x36,0xa6,0xee,0xc1,0x57]
+
 SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW(IOC_WS2,6)
 
+SO_UPDATE_ACCEPT_CONTEXT = 0x700B
+
 # Status Codes
 STATUS_PENDING = 0x00000103
 
-DisconnectEx = _ffi.NULL
 
 def _int2intptr(int2cast):
     return _ffi.cast("ULONG_PTR", int2cast)
@@ -86,13 +100,37 @@
     TYPE_WAIT_NAMED_PIPE_AND_CONNECT = 9
     TYPE_TRANSMIT_FILE = 10
 
-_accept_ex = _ffi.new("AcceptExPtr[1]")
+_accept_ex = _ffi.new("AcceptExPtr*")
+_connect_ex = _ffi.new("ConnectExPtr*")
+_disconnect_ex = _ffi.new("DisconnectExPtr*")
+
 
 def initiailize_function_ptrs():
     s = _winsock2.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
+    dwBytes = _ffi.new("DWORD[1]", [0])
     if s == INVALID_SOCKET:
         raise _winapi._WinError()
 
+    result = _winsock2.WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER,    \
+                             WSAID_ACCEPTEX, _ffi.sizeof(WSAID_ACCEPTEX[0]), _accept_ex,       \
+                             _ffi.sizeof(_accept_ex[0]), dwBytes, _ffi.NULL, _ffi.NULL)
+    if result == INVALID_SOCKET:
+        raise _winapi._WinError()
+
+    result = _winsock2.WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER,    \
+                             WSAID_CONNECTEX, _ffi.sizeof(WSAID_CONNECTEX[0]), _connect_ex,       \
+                             _ffi.sizeof(_connect_ex[0]), dwBytes, _ffi.NULL, _ffi.NULL)
+    if result == INVALID_SOCKET:
+        raise _winapi._WinError()
+
+    result = _winsock2.WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER,    \
+                             WSAID_DISCONNECTEX, _ffi.sizeof(WSAID_DISCONNECTEX[0]), _disconnect_ex,       \
+                             _ffi.sizeof(_disconnect_ex[0]), dwBytes, _ffi.NULL, _ffi.NULL)
+    if result == INVALID_SOCKET:
+        raise _winapi._WinError()
+
+
+initiailize_function_ptrs()
 
 
 class Overlapped(object):
@@ -316,6 +354,10 @@
             self.type = OverlappedType.TYPE_NOT_STARTED
             raise _winapi.WinError()
     
+    def AcceptEx(self, listensocket, acceptsocket):
+        xxx
+        return None
+
     @property
     def pending(self):
         return (not HasOverlappedIoCompleted(self.overlapped[0]) and
@@ -325,8 +367,6 @@
     def address(self):
         return self.overlapped
 
-    AcceptEx = None
-
 def SetEvent(handle):
     ret = _kernel32.SetEvent(handle)
     if not ret:
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
@@ -166,12 +166,14 @@
 SOCKET __stdcall socket(int, int, int);
 typedef BOOL (__stdcall * LPFN_DISCONNECTEX) (SOCKET, LPOVERLAPPED, DWORD, DWORD);
 typedef VOID (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, LPVOID);
-typedef BOOL (WINAPI* AcceptExPtr)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);  
-typedef BOOL (WINAPI AcceptEx)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);  
+
 int __stdcall WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE);
 int __stdcall WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPOVERLAPPED,  LPOVERLAPPED_COMPLETION_ROUTINE);
 int __stdcall WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE);
 
+typedef BOOL (WINAPI* AcceptExPtr)(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED);  
+typedef BOOL (WINAPI *ConnectExPtr)(SOCKET, const struct sockaddr *, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED);
+typedef BOOL (WINAPI *DisconnectExPtr)(SOCKET, LPOVERLAPPED, DWORD, DWORD);
 
 typedef struct _GUID {
   DWORD Data1;
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\x23\x03\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x13\x03\x00\x01\x13\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x01\x1A\x03\x00\x00\x1A\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x1A\x11\x00\x00\x1A\x11\x00\x01\x18\x03\x00\x01\x14\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x03\x00\x00\x26\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x26\x11\x00\x00\x11\x11\x00\x01\x0E\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\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x14\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x19\x03\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x15\x11\x00\x01\x09\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x48\x11\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x4D\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\x14\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x14\x11\x00\x00\x14\x03\x00\x00\x15\x03\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\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\x14\x11\x00\x00\x15\x11\x00\x00\x4D\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\x14\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x26\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\x23\x03\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xC5\x03\x00\x00\x9D\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x9D\x11\x00\x00\x9D\x11\x00\x00\x22\x11\x00\x00\x23\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x5A\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x0A\x01\x00\x00\x26\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x13\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x11\x11\x00\x00\x9D\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x02\x0F\x00\x00\xC0\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\xC0\x0D\x00\x00\x00\x0F\x00\x00\xC0\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x01\x17\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x01\x1A\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xC8\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xC5\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xCB\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xC8\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xCB\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\xC8\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\x9D\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\xC8\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD1\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xC8\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x01\x23\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x01\x23\x0D\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x05\x09\x00\x00\x02\x09\x00\x01\x16\x03\x00\x00\x06\x09\x00\x00\x07\x09\x00\x00\x03\x09\x00\x00\x08\x09\x00\x00\x02\x01\x00\x00\x40\x03\x00\x00\x82\x03\x00\x00\x01\x09\x00\x00\x00\x09\x00\x01\x20\x03\x00\x00\x04\x01\x00\x01\x20\x05\x00\x00\x00\x08\x00\x00\x00\x01',
-    _globals = (b'\x00\x00\x33\x23CancelIo',0,b'\x00\x00\x36\x23CancelIoEx',0,b'\x00\x00\x33\x23CloseHandle',0,b'\x00\x00\x36\x23ConnectNamedPipe',0,b'\x00\x00\xC7\x23CreateEventA',0,b'\x00\x00\xCD\x23CreateEventW',0,b'\x00\x00\xD3\x23CreateFileA',0,b'\x00\x01\x00\x23CreateFileW',0,b'\x00\x00\xEE\x23CreateIoCompletionPort',0,b'\x00\x00\xDC\x23CreateNamedPipeA',0,b'\x00\x00\xF6\x23CreateNamedPipeW',0,b'\x00\x00\x25\x23CreatePipe',0,b'\x00\x00\x19\x23CreateProcessA',0,b'\x00\x00\x9C\x23CreateProcessW',0,b'\x00\x00\x8C\x23DuplicateHandle',0,b'\x00\x00\xF4\x23GetCurrentProcess',0,b'\x00\x00\x5C\x23GetExitCodeProcess',0,b'\x00\x00\xBD\x23GetLastError',0,b'\x00\x00\xB8\x23GetModuleFileNameW',0,b'\x00\x00\x3A\x23GetOverlappedResult',0,b'\x00\x00\x60\x23GetQueuedCompletionStatus',0,b'\x00\x00\xEB\x23GetStdHandle',0,b'\x00\x00\xBD\x23GetVersion',0,b'\x00\x00\x6D\x23PostQueuedCompletionStatus',0,b'\x00\x00\x10\x23ReadFile',0,b'\x00\x00\x2B\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\xAB\x23SetErrorMode',0,b'\x00\x00\x33\x23SetEvent',0,b'\x00\x00\x67\x23SetNamedPipeHandleState',0,b'\x00\x00\x58\x23TerminateProcess',0,b'\x00\x00\x33\x23UnregisterWait',0,b'\x00\x00\x7E\x23UnregisterWaitEx',0,b'\x00\x00\x73\x23WSAIoctl',0,b'\x00\x00\x46\x23WSARecv',0,b'\x00\x00\x4F\x23WSASend',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\xAE\x23WaitForMultipleObjects',0,b'\x00\x00\xB4\x23WaitForSingleObject',0,b'\x00\x00\x95\x23WriteFile',0,b'\x00\x00\xA8\x23_get_osfhandle',0,b'\x00\x00\x17\x23_getch',0,b'\x00\x00\x17\x23_getche',0,b'\x00\x00\xC2\x23_getwch',0,b'\x00\x00\xC2\x23_getwche',0,b'\x00\x00\x17\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\xC4\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\xBF\x23_ungetwch',0,b'\x00\x00\xE6\x23socket',0),
-    _struct_unions = ((b'\x00\x00\x01\x1E\x00\x00\x00\x03$1',b'\x00\x01\x1D\x11DUMMYSTRUCTNAME',b'\x00\x00\x11\x11Pointer'),(b'\x00\x00\x01\x1D\x00\x00\x00\x02$2',b'\x00\x00\x13\x11Offset',b'\x00\x00\x13\x11OffsetHigh'),(b'\x00\x00\x01\x14\x00\x00\x00\x02$PROCESS_INFORMATION',b'\x00\x00\x11\x11hProcess',b'\x00\x00\x11\x11hThread',b'\x00\x00\x13\x11dwProcessId',b'\x00\x00\x13\x11dwThreadId'),(b'\x00\x00\x01\x18\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x13\x11cb',b'\x00\x00\x1A\x11lpReserved',b'\x00\x00\x1A\x11lpDesktop',b'\x00\x00\x1A\x11lpTitle',b'\x00\x00\x13\x11dwX',b'\x00\x00\x13\x11dwY',b'\x00\x00\x13\x11dwXSize',b'\x00\x00\x13\x11dwYSize',b'\x00\x00\x13\x11dwXCountChars',b'\x00\x00\x13\x11dwYCountChars',b'\x00\x00\x13\x11dwFillAttribute',b'\x00\x00\x13\x11dwFlags',b'\x00\x00\xC0\x11wShowWindow',b'\x00\x00\xC0\x11cbReserved2',b'\x00\x01\x1F\x11lpReserved2',b'\x00\x00\x11\x11hStdInput',b'\x00\x00\x11\x11hStdOutput',b'\x00\x00\x11\x11hStdError'),(b'\x00\x00\x01\x12\x00\x00\x00\x02_GUID',b'\x00\x00\x13\x11Data1',b'\x00\x00\xC0\x11Data2',b'\x00\x00\xC0\x11Data3',b'\x00\x01\x21\x11Data4'),(b'\x00\x00\x01\x13\x00\x00\x00\x02_OVERLAPPED',b'\x00\x00\x13\x11Internal',b'\x00\x00\x13\x11InternalHigh',b'\x00\x01\x1E\x11DUMMYUNIONNAME',b'\x00\x00\x11\x11hEvent'),(b'\x00\x00\x01\x16\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x11\x11hCompletionPort',b'\x00\x00\x15\x11Overlapped'),(b'\x00\x00\x01\x17\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x13\x11nLength',b'\x00\x00\x11\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x01\x19\x00\x00\x00\x02_WSABUF',b'\x00\x00\x13\x11len',b'\x00\x00\x1A\x11buf')),
-    _typenames = (b'\x00\x00\x00\x82AcceptEx',b'\x00\x00\x01\x1CAcceptExPtr',b'\x00\x00\x01\x12GUID',b'\x00\x00\x01\x1BLPFN_DISCONNECTEX',b'\x00\x00\x00\x15LPOVERLAPPED',b'\x00\x00\x00\x4DLPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x23LPPROCESS_INFORMATION',b'\x00\x00\x01\x15LPPostCallbackData',b'\x00\x00\x00\xC8LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x22LPSTARTUPINFO',b'\x00\x00\x00\x48LPWSABUF',b'\x00\x00\x01\x13OVERLAPPED',b'\x00\x00\x01\x14PROCESS_INFORMATION',b'\x00\x00\x00\xC8PSECURITY_ATTRIBUTES',b'\x00\x00\x01\x16PostCallbackData',b'\x00\x00\x01\x17SECURITY_ATTRIBUTES',b'\x00\x00\x00\x11SOCKET',b'\x00\x00\x01\x18STARTUPINFO',b'\x00\x00\x00\x2EWAITORTIMERCALLBACK',b'\x00\x00\x01\x19WSABUF',b'\x00\x00\x00\xC0wint_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\x2E\x03\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x13\x03\x00\x01\x1C\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x01\x23\x03\x00\x00\x1A\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x1A\x11\x00\x00\x1A\x11\x00\x01\x21\x03\x00\x01\x1D\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x03\x00\x00\x26\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x26\x11\x00\x00\x11\x11\x00\x01\x17\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\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x14\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x15\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x22\x03\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x15\x11\x00\x01\x12\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x48\x11\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x4D\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x28\x03\x00\x00\x07\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x15\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\x14\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x14\x11\x00\x00\x14\x03\x00\x00\x15\x03\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x14\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\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\x14\x11\x00\x00\x15\x11\x00\x00\x4D\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\x14\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x26\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\x2E\x03\x00\x00\x0A\x01\x00\x00\x14\x11\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xCE\x03\x00\x00\xA6\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\xA6\x11\x00\x00\xA6\x11\x00\x00\x22\x11\x00\x00\x23\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x63\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x0A\x01\x00\x00\x26\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x13\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x11\x11\x00\x00\xA6\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x13\x0D\x00\x00\x02\x0F\x00\x00\xC9\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\xC9\x0D\x00\x00\x00\x0F\x00\x00\xC9\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x01\x20\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x01\x23\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD1\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xCE\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD4\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xD1\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD4\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\xD1\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\xA6\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\xD1\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xDA\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xD1\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x01\x2E\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x01\x2E\x0D\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x05\x09\x00\x00\x02\x09\x00\x01\x1F\x03\x00\x00\x06\x09\x00\x00\x07\x09\x00\x00\x03\x09\x00\x00\x08\x09\x00\x00\x02\x01\x00\x00\x40\x03\x00\x00\x58\x03\x00\x00\x8B\x03\x00\x00\x01\x09\x00\x00\x09\x09\x00\x00\x00\x09\x00\x01\x2B\x03\x00\x00\x04\x01\x00\x01\x2B\x05\x00\x00\x00\x08\x00\x00\x00\x01',
+    _globals = (b'\x00\x00\x33\x23CancelIo',0,b'\x00\x00\x36\x23CancelIoEx',0,b'\x00\x00\x33\x23CloseHandle',0,b'\x00\x00\x36\x23ConnectNamedPipe',0,b'\x00\x00\xD0\x23CreateEventA',0,b'\x00\x00\xD6\x23CreateEventW',0,b'\x00\x00\xDC\x23CreateFileA',0,b'\x00\x01\x09\x23CreateFileW',0,b'\x00\x00\xF7\x23CreateIoCompletionPort',0,b'\x00\x00\xE5\x23CreateNamedPipeA',0,b'\x00\x00\xFF\x23CreateNamedPipeW',0,b'\x00\x00\x25\x23CreatePipe',0,b'\x00\x00\x19\x23CreateProcessA',0,b'\x00\x00\xA5\x23CreateProcessW',0,b'\x00\x00\x95\x23DuplicateHandle',0,b'\x00\x00\xFD\x23GetCurrentProcess',0,b'\x00\x00\x65\x23GetExitCodeProcess',0,b'\x00\x00\xC6\x23GetLastError',0,b'\x00\x00\xC1\x23GetModuleFileNameW',0,b'\x00\x00\x3A\x23GetOverlappedResult',0,b'\x00\x00\x69\x23GetQueuedCompletionStatus',0,b'\x00\x00\xF4\x23GetStdHandle',0,b'\x00\x00\xC6\x23GetVersion',0,b'\x00\x00\x76\x23PostQueuedCompletionStatus',0,b'\x00\x00\x10\x23ReadFile',0,b'\x00\x00\x2B\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\xB4\x23SetErrorMode',0,b'\x00\x00\x33\x23SetEvent',0,b'\x00\x00\x70\x23SetNamedPipeHandleState',0,b'\x00\x00\x61\x23TerminateProcess',0,b'\x00\x00\x33\x23UnregisterWait',0,b'\x00\x00\x87\x23UnregisterWaitEx',0,b'\x00\x00\x7C\x23WSAIoctl',0,b'\x00\x00\x46\x23WSARecv',0,b'\x00\x00\x4F\x23WSASend',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\xB7\x23WaitForMultipleObjects',0,b'\x00\x00\xBD\x23WaitForSingleObject',0,b'\x00\x00\x9E\x23WriteFile',0,b'\x00\x00\xB1\x23_get_osfhandle',0,b'\x00\x00\x17\x23_getch',0,b'\x00\x00\x17\x23_getche',0,b'\x00\x00\xCB\x23_getwch',0,b'\x00\x00\xCB\x23_getwche',0,b'\x00\x00\x17\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\xCD\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\xC8\x23_ungetwch',0,b'\x00\x00\xEF\x23socket',0),
+    _struct_unions = ((b'\x00\x00\x01\x29\x00\x00\x00\x03$1',b'\x00\x01\x27\x11DUMMYSTRUCTNAME',b'\x00\x00\x11\x11Pointer'),(b'\x00\x00\x01\x27\x00\x00\x00\x02$2',b'\x00\x00\x13\x11Offset',b'\x00\x00\x13\x11OffsetHigh'),(b'\x00\x00\x01\x1D\x00\x00\x00\x02$PROCESS_INFORMATION',b'\x00\x00\x11\x11hProcess',b'\x00\x00\x11\x11hThread',b'\x00\x00\x13\x11dwProcessId',b'\x00\x00\x13\x11dwThreadId'),(b'\x00\x00\x01\x21\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x13\x11cb',b'\x00\x00\x1A\x11lpReserved',b'\x00\x00\x1A\x11lpDesktop',b'\x00\x00\x1A\x11lpTitle',b'\x00\x00\x13\x11dwX',b'\x00\x00\x13\x11dwY',b'\x00\x00\x13\x11dwXSize',b'\x00\x00\x13\x11dwYSize',b'\x00\x00\x13\x11dwXCountChars',b'\x00\x00\x13\x11dwYCountChars',b'\x00\x00\x13\x11dwFillAttribute',b'\x00\x00\x13\x11dwFlags',b'\x00\x00\xC9\x11wShowWindow',b'\x00\x00\xC9\x11cbReserved2',b'\x00\x01\x2A\x11lpReserved2',b'\x00\x00\x11\x11hStdInput',b'\x00\x00\x11\x11hStdOutput',b'\x00\x00\x11\x11hStdError'),(b'\x00\x00\x01\x1B\x00\x00\x00\x02_GUID',b'\x00\x00\x13\x11Data1',b'\x00\x00\xC9\x11Data2',b'\x00\x00\xC9\x11Data3',b'\x00\x01\x2C\x11Data4'),(b'\x00\x00\x01\x1C\x00\x00\x00\x02_OVERLAPPED',b'\x00\x00\x13\x11Internal',b'\x00\x00\x13\x11InternalHigh',b'\x00\x01\x29\x11DUMMYUNIONNAME',b'\x00\x00\x11\x11hEvent'),(b'\x00\x00\x01\x1F\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x11\x11hCompletionPort',b'\x00\x00\x15\x11Overlapped'),(b'\x00\x00\x01\x20\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x13\x11nLength',b'\x00\x00\x11\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x01\x22\x00\x00\x00\x02_WSABUF',b'\x00\x00\x13\x11len',b'\x00\x00\x1A\x11buf'),(b'\x00\x00\x01\x28\x00\x00\x00\x10sockaddr',)),
+    _typenames = (b'\x00\x00\x01\x26AcceptExPtr',b'\x00\x00\x01\x25ConnectExPtr',b'\x00\x00\x01\x24DisconnectExPtr',b'\x00\x00\x01\x1BGUID',b'\x00\x00\x01\x24LPFN_DISCONNECTEX',b'\x00\x00\x00\x15LPOVERLAPPED',b'\x00\x00\x00\x4DLPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x23LPPROCESS_INFORMATION',b'\x00\x00\x01\x1ELPPostCallbackData',b'\x00\x00\x00\xD1LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x22LPSTARTUPINFO',b'\x00\x00\x00\x48LPWSABUF',b'\x00\x00\x01\x1COVERLAPPED',b'\x00\x00\x01\x1DPROCESS_INFORMATION',b'\x00\x00\x00\xD1PSECURITY_ATTRIBUTES',b'\x00\x00\x01\x1FPostCallbackData',b'\x00\x00\x01\x20SECURITY_ATTRIBUTES',b'\x00\x00\x00\x11SOCKET',b'\x00\x00\x01\x21STARTUPINFO',b'\x00\x00\x00\x2EWAITORTIMERCALLBACK',b'\x00\x00\x01\x22WSABUF',b'\x00\x00\x00\xC9wint_t'),
 )


More information about the pypy-commit mailing list