[pypy-commit] pypy winoverlapped: Implemented Overlapped.AcceptEx

andrewjlawrence pypy.commits at gmail.com
Sun Mar 17 11:13:41 EDT 2019


Author: andrewjlawrence
Branch: winoverlapped
Changeset: r96333:619d115d9992
Date: 2019-03-17 15:11 +0000
http://bitbucket.org/pypy/pypy/changeset/619d115d9992/

Log:	Implemented Overlapped.AcceptEx

diff --git a/lib_pypy/_overlapped.py b/lib_pypy/_overlapped.py
--- a/lib_pypy/_overlapped.py
+++ b/lib_pypy/_overlapped.py
@@ -115,17 +115,21 @@
                              WSAID_ACCEPTEX, _ffi.sizeof(WSAID_ACCEPTEX[0]), _accept_ex,       \
                              _ffi.sizeof(_accept_ex[0]), dwBytes, _ffi.NULL, _ffi.NULL)
     if result == INVALID_SOCKET:
+        _winsock2.closesocket(s)
         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:
+        _winsock2.closesocket(s)
         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)
+    
+    _winsock2.closesocket(s)
     if result == INVALID_SOCKET:
         raise _winapi._WinError()
 
@@ -317,8 +321,9 @@
              err = _winapi.ERROR_SUCCESS
         else:
              err = _kernel32.GetLastError()
-             self.error = err
-           
+             
+        self.error = err
+        
         if err == _winapi.ERROR_BROKEN_PIPE:
             mark_as_completed(self.overlapped)
             raise _winapi._WinError()
@@ -342,19 +347,52 @@
         ret = _kernel32.WriteFile(self.handle, self.write_buffer, len(self.write_buffer), written, self.overlapped)
         
         if ret:
-            err = _winapi.ERROR_SUCCESS
+            self.error = _winapi.ERROR_SUCCESS
         else:
-            err = _winapi.GetLastError()
+            self.error = _winapi.GetLastError()
 
-        self.error = err
-
-        if err == _winapi.ERROR_SUCCESS or err == _winapi.ERROR_IO_PENDING:
+        if self.error == _winapi.ERROR_SUCCESS or self.error == _winapi.ERROR_IO_PENDING:
             return None
         else:
             self.type = OverlappedType.TYPE_NOT_STARTED
             raise _winapi.WinError()
     
     def AcceptEx(self, listensocket, acceptsocket):
+        listensocket = _int2handle(listensocket)
+        acceptsocket = _int2handle(acceptsocket)
+        bytesreceived = _ffi.new("DWORD[1]")
+        
+        if self.type != OverlappedType.TYPE_NONE:
+            raise _winapi._WinError()
+        
+        size = _ffi.sizeof("struct sockaddr_in6") + 16
+        buf = _ffi.new("CHAR[]", size*2)
+        if not buf:
+            return None
+        
+        self.type = OverlappedType.TYPE_ACCEPT
+        self.handle = listensocket
+        self.read_buffer = buf
+        
+        res = _accept_ex[0](listensocket, acceptsocket, buf, \
+            0, size, size, bytesreceived, self.overlapped)
+        
+        if res:
+            self.error = _winapi.ERROR_SUCCESS
+        else:
+            self.error = _kernel32.GetLastError()
+
+        if self.error == _winapi.ERROR_SUCCESS or self.error == _winapi.ERROR_IO_PENDING:
+            return None
+        else:
+            self.type = OverlappedType.TYPE_NOT_STARTED
+            raise _winapi.WinError()
+
+    def DisconnectEx(self, socket, flags):
+        xxx
+        return None
+
+    def ConnectEx(self, socket, flags):
         xxx
         return None
 
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
@@ -164,6 +164,7 @@
 
 typedef HANDLE SOCKET;
 SOCKET __stdcall socket(int, int, int);
+int closesocket(SOCKET);
 typedef BOOL (__stdcall * LPFN_DISCONNECTEX) (SOCKET, LPOVERLAPPED, DWORD, DWORD);
 typedef VOID (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, LPVOID);
 
@@ -182,6 +183,36 @@
   BYTE  Data4[8];
 } GUID;
 
+typedef USHORT ADDRESS_FAMILY;
+
+typedef struct in6_addr {
+  union {
+    UCHAR  Byte[16];
+    USHORT Word[8];
+  } u;
+} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;
+
+typedef struct {
+  union {
+    struct {
+      ULONG  Zone : 28;
+      ULONG  Level : 4;
+    };
+    ULONG  Value;
+  };
+} SCOPE_ID, *PSCOPE_ID;
+
+typedef struct sockaddr_in6 {
+  ADDRESS_FAMILY sin6_family;
+  USHORT         sin6_port;
+  ULONG          sin6_flowinfo;
+  IN6_ADDR       sin6_addr;
+  union {
+    ULONG    sin6_scope_id;
+    SCOPE_ID sin6_scope_struct;
+  };
+} SOCKADDR_IN6_LH, *PSOCKADDR_IN6_LH, *LPSOCKADDR_IN6_LH;
+
 """)
 
 if __name__ == "__main__":
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\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'),
+    _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\x3F\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x16\x03\x00\x01\x21\x03\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x00\x00\x0F\x00\x00\x01\x0D\x00\x01\x2C\x03\x00\x00\x1D\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x1D\x11\x00\x00\x1D\x11\x00\x01\x2A\x03\x00\x01\x22\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x03\x00\x00\x29\x11\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x29\x11\x00\x00\x11\x11\x00\x01\x1A\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\x18\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x18\x11\x00\x00\x17\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x18\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x2B\x03\x00\x00\x0A\x01\x00\x00\x17\x11\x00\x00\x17\x11\x00\x00\x18\x11\x00\x01\x15\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x4B\x11\x00\x00\x0A\x01\x00\x00\x17\x11\x00\x00\x0A\x01\x00\x00\x18\x11\x00\x00\x50\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x01\x32\x03\x00\x00\x07\x01\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x17\x11\x00\x00\x18\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\x17\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x17\x11\x00\x00\x17\x03\x00\x00\x18\x03\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x17\x11\x00\x00\x17\x11\x00\x00\x17\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x18\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\x17\x11\x00\x00\x18\x11\x00\x00\x50\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\x17\x11\x00\x00\x18\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x29\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\x3F\x03\x00\x00\x0A\x01\x00\x00\x17\x11\x00\x00\x18\x11\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\xD1\x03\x00\x00\xA9\x11\x00\x00\x11\x11\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\xA9\x11\x00\x00\xA9\x11\x00\x00\x25\x11\x00\x00\x26\x11\x00\x00\x02\x0F\x00\x00\x0D\x0D\x00\x00\x07\x01\x00\x00\x00\x0F\x00\x00\x66\x0D\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\x16\x0D\x00\x00\x0A\x01\x00\x00\x29\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x00\x0F\x00\x00\x16\x0D\x00\x00\x11\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x16\x0D\x00\x00\x11\x11\x00\x00\xA9\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x16\x0D\x00\x00\x02\x0F\x00\x00\xCC\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\xCC\x0D\x00\x00\x00\x0F\x00\x00\xCC\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x11\x0D\x00\x01\x27\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x01\x2C\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD4\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xD1\x03\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD7\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xD4\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xD7\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\xD4\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\xA9\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\xD4\x11\x00\x00\x02\x0F\x00\x00\x11\x0D\x00\x00\xDD\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\xD4\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x02\x0F\x00\x01\x3F\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x11\x11\x00\x00\x00\x0F\x00\x01\x3F\x0D\x00\x00\x11\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x09\x09\x00\x01\x20\x03\x00\x00\x0E\x09\x00\x00\x0A\x09\x00\x00\x06\x09\x00\x01\x24\x03\x00\x00\x0B\x09\x00\x01\x26\x03\x00\x00\x07\x09\x00\x00\x0C\x09\x00\x01\x29\x03\x00\x00\x10\x09\x00\x00\x08\x09\x00\x00\x0D\x09\x00\x00\x02\x01\x00\x00\x43\x03\x00\x00\x5B\x03\x00\x00\x8E\x03\x00\x00\x01\x09\x00\x00\x04\x09\x00\x00\x0F\x09\x00\x00\x00\x09\x00\x00\x02\x09\x00\x00\x03\x09\x00\x00\x05\x09\x00\x01\x38\x03\x00\x00\x04\x01\x00\x01\x38\x05\x00\x00\x00\x10\x00\x01\x38\x05\x00\x00\x00\x08\x00\x00\xCC\x05\x00\x00\x00\x08\x00\x00\x00\x01',
+    _globals = (b'\x00\x00\x36\x23CancelIo',0,b'\x00\x00\x39\x23CancelIoEx',0,b'\x00\x00\x36\x23CloseHandle',0,b'\x00\x00\x39\x23ConnectNamedPipe',0,b'\x00\x00\xD3\x23CreateEventA',0,b'\x00\x00\xD9\x23CreateEventW',0,b'\x00\x00\xDF\x23CreateFileA',0,b'\x00\x01\x0C\x23CreateFileW',0,b'\x00\x00\xFA\x23CreateIoCompletionPort',0,b'\x00\x00\xE8\x23CreateNamedPipeA',0,b'\x00\x01\x02\x23CreateNamedPipeW',0,b'\x00\x00\x28\x23CreatePipe',0,b'\x00\x00\x1C\x23CreateProcessA',0,b'\x00\x00\xA8\x23CreateProcessW',0,b'\x00\x00\x98\x23DuplicateHandle',0,b'\x00\x01\x00\x23GetCurrentProcess',0,b'\x00\x00\x68\x23GetExitCodeProcess',0,b'\x00\x00\xC9\x23GetLastError',0,b'\x00\x00\xC4\x23GetModuleFileNameW',0,b'\x00\x00\x3D\x23GetOverlappedResult',0,b'\x00\x00\x6C\x23GetQueuedCompletionStatus',0,b'\x00\x00\xF7\x23GetStdHandle',0,b'\x00\x00\xC9\x23GetVersion',0,b'\x00\x00\x79\x23PostQueuedCompletionStatus',0,b'\x00\x00\x13\x23ReadFile',0,b'\x00\x00\x2E\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\xB7\x23SetErrorMode',0,b'\x00\x00\x36\x23SetEvent',0,b'\x00\x00\x73\x23SetNamedPipeHandleState',0,b'\x00\x00\x64\x23TerminateProcess',0,b'\x00\x00\x36\x23UnregisterWait',0,b'\x00\x00\x8A\x23UnregisterWaitEx',0,b'\x00\x00\x7F\x23WSAIoctl',0,b'\x00\x00\x49\x23WSARecv',0,b'\x00\x00\x52\x23WSASend',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\xBA\x23WaitForMultipleObjects',0,b'\x00\x00\xC0\x23WaitForSingleObject',0,b'\x00\x00\xA1\x23WriteFile',0,b'\x00\x00\xB4\x23_get_osfhandle',0,b'\x00\x00\x1A\x23_getch',0,b'\x00\x00\x1A\x23_getche',0,b'\x00\x00\xCE\x23_getwch',0,b'\x00\x00\xCE\x23_getwche',0,b'\x00\x00\x1A\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\xD0\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\xCB\x23_ungetwch',0,b'\x00\x00\x10\x23closesocket',0,b'\x00\x00\xF2\x23socket',0),
+    _struct_unions = ((b'\x00\x00\x01\x33\x00\x00\x00\x03$1',b'\x00\x01\x30\x11DUMMYSTRUCTNAME',b'\x00\x00\x11\x11Pointer'),(b'\x00\x00\x01\x30\x00\x00\x00\x02$2',b'\x00\x00\x16\x11Offset',b'\x00\x00\x16\x11OffsetHigh'),(b'\x00\x00\x01\x34\x00\x00\x00\x03$3',b'\x00\x01\x39\x11Byte',b'\x00\x01\x3D\x11Word'),(b'\x00\x00\x01\x35\x00\x00\x00\x01$4',b'\x00\x01\x31\x11',b'\x00\x00\x16\x11Value'),(b'\x00\x00\x01\x31\x00\x00\x00\x02$5',b'\x00\x00\x16\x13\x00\x00\x00\x1CZone',b'\x00\x00\x16\x13\x00\x00\x00\x04Level'),(b'\x00\x00\x01\x36\x00\x00\x00\x03$6',b'\x00\x00\x16\x11sin6_scope_id',b'\x00\x01\x26\x11sin6_scope_struct'),(b'\x00\x00\x01\x22\x00\x00\x00\x02$PROCESS_INFORMATION',b'\x00\x00\x11\x11hProcess',b'\x00\x00\x11\x11hThread',b'\x00\x00\x16\x11dwProcessId',b'\x00\x00\x16\x11dwThreadId'),(b'\x00\x00\x01\x26\x00\x00\x00\x00$SCOPE_ID',b'\x00\x01\x35\x11'),(b'\x00\x00\x01\x2A\x00\x00\x00\x02$STARTUPINFO',b'\x00\x00\x16\x11cb',b'\x00\x00\x1D\x11lpReserved',b'\x00\x00\x1D\x11lpDesktop',b'\x00\x00\x1D\x11lpTitle',b'\x00\x00\x16\x11dwX',b'\x00\x00\x16\x11dwY',b'\x00\x00\x16\x11dwXSize',b'\x00\x00\x16\x11dwYSize',b'\x00\x00\x16\x11dwXCountChars',b'\x00\x00\x16\x11dwYCountChars',b'\x00\x00\x16\x11dwFillAttribute',b'\x00\x00\x16\x11dwFlags',b'\x00\x00\xCC\x11wShowWindow',b'\x00\x00\xCC\x11cbReserved2',b'\x00\x01\x37\x11lpReserved2',b'\x00\x00\x11\x11hStdInput',b'\x00\x00\x11\x11hStdOutput',b'\x00\x00\x11\x11hStdError'),(b'\x00\x00\x01\x1E\x00\x00\x00\x02_GUID',b'\x00\x00\x16\x11Data1',b'\x00\x00\xCC\x11Data2',b'\x00\x00\xCC\x11Data3',b'\x00\x01\x3B\x11Data4'),(b'\x00\x00\x01\x21\x00\x00\x00\x02_OVERLAPPED',b'\x00\x00\x16\x11Internal',b'\x00\x00\x16\x11InternalHigh',b'\x00\x01\x33\x11DUMMYUNIONNAME',b'\x00\x00\x11\x11hEvent'),(b'\x00\x00\x01\x24\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x11\x11hCompletionPort',b'\x00\x00\x18\x11Overlapped'),(b'\x00\x00\x01\x27\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x16\x11nLength',b'\x00\x00\x11\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x01\x2B\x00\x00\x00\x02_WSABUF',b'\x00\x00\x16\x11len',b'\x00\x00\x1D\x11buf'),(b'\x00\x00\x01\x20\x00\x00\x00\x02in6_addr',b'\x00\x01\x34\x11u'),(b'\x00\x00\x01\x32\x00\x00\x00\x10sockaddr',),(b'\x00\x00\x01\x29\x00\x00\x00\x00sockaddr_in6',b'\x00\x00\xCC\x11sin6_family',b'\x00\x00\xCC\x11sin6_port',b'\x00\x00\x16\x11sin6_flowinfo',b'\x00\x01\x20\x11sin6_addr',b'\x00\x01\x36\x11')),
+    _typenames = (b'\x00\x00\x00\xCCADDRESS_FAMILY',b'\x00\x00\x01\x2FAcceptExPtr',b'\x00\x00\x01\x2EConnectExPtr',b'\x00\x00\x01\x2DDisconnectExPtr',b'\x00\x00\x01\x1EGUID',b'\x00\x00\x01\x20IN6_ADDR',b'\x00\x00\x01\x2DLPFN_DISCONNECTEX',b'\x00\x00\x01\x1FLPIN6_ADDR',b'\x00\x00\x00\x18LPOVERLAPPED',b'\x00\x00\x00\x50LPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x26LPPROCESS_INFORMATION',b'\x00\x00\x01\x23LPPostCallbackData',b'\x00\x00\x00\xD4LPSECURITY_ATTRIBUTES',b'\x00\x00\x01\x28LPSOCKADDR_IN6_LH',b'\x00\x00\x00\x25LPSTARTUPINFO',b'\x00\x00\x00\x4BLPWSABUF',b'\x00\x00\x01\x21OVERLAPPED',b'\x00\x00\x01\x1FPIN6_ADDR',b'\x00\x00\x01\x22PROCESS_INFORMATION',b'\x00\x00\x01\x25PSCOPE_ID',b'\x00\x00\x00\xD4PSECURITY_ATTRIBUTES',b'\x00\x00\x01\x28PSOCKADDR_IN6_LH',b'\x00\x00\x01\x24PostCallbackData',b'\x00\x00\x01\x26SCOPE_ID',b'\x00\x00\x01\x27SECURITY_ATTRIBUTES',b'\x00\x00\x01\x29SOCKADDR_IN6_LH',b'\x00\x00\x00\x11SOCKET',b'\x00\x00\x01\x2ASTARTUPINFO',b'\x00\x00\x00\x31WAITORTIMERCALLBACK',b'\x00\x00\x01\x2BWSABUF',b'\x00\x00\x00\xCCwint_t'),
 )


More information about the pypy-commit mailing list