Author: andrewjlawrence
Branch: winoverlapped
Changeset: r96184:a98c0892bf12
Date: 2019-02-27 00:30 +0000
http://bitbucket.org/pypy/pypy/changeset/a98c0892bf12/

Log:    Fixed a another test

diff --git a/lib_pypy/_overlapped.py b/lib_pypy/_overlapped.py
--- a/lib_pypy/_overlapped.py
+++ b/lib_pypy/_overlapped.py
@@ -65,22 +65,20 @@
         self.address = _ffi.addressof(self.overlapped[0])
 
     def __del__(self):
-        ###if (!HasOverlappedIoCompleted(&self->overlapped) &&
-        ###    self->type != TYPE_NOT_STARTED)
-        ###
-        xxx
-        # do this somehow else
-        #err = _kernel32.GetLastError()
-        #bytes = _ffi.new('DWORD[1]')
-        #o = self.overlapped[0]
-        #if self.overlapped[0].pending:
-        #    if _kernel32.CancelIoEx(o.handle, o.overlapped) & \
-        #        self.GetOverlappedResult(o.handle, o.overlapped, 
_ffi.addressof(bytes), True):
-        #        # The operation is no longer pending, nothing to do
-        #        pass
-        #    else:
-        #        raise RuntimeError('deleting an overlapped struct with a 
pending operation not supported')
-               
+        bytes = _ffi.new("DWORD")
+        olderr = _winapi.GetLastError()
+        if not HasOverlappedIoCompleted(self.overlapped) and self.type != 
TYPE_NOT_STARTED:
+            wait = _kernel32.CancelIoEx(self.handle, self.overlapped)
+            ret = self.GetOverlappedResult(wait)
+            err = _winapi.ERROR_SUCCESS
+            if not ret:
+                err = _winapi.GetLastError()
+            if err != _winapi.ERROR_SUCCESS and \
+               err != _winapi.ERROR_NOT_FOUND and \
+               err != _winapi.ERROR_OPERATION_ABORTED:
+               raise _winapi._WinError()
+        if self.overlapped.hEvent:
+            _winapi.CloseHandle(self.overlapped.hEvent)
 
     @property
     def event(self):
@@ -104,16 +102,7 @@
             self.pending = 0
             raise _winapi._WinError()
         if self.type == OverlappedType.TYPE_READ:
-            if self.completed and self.allocated_buffer:
-                if transferred[0] != len(self.allocated_buffer):
-                    ### Do a resize
-                    result = _ffi.new("CHAR[]", transferred[0])
-                    _ffi.memmove(result, self.allocated_buffer, transferred[0])
-                    return result
-                else:
-                    return b''
-            else:
-                return b''
+            return _ffi.unpack(self.allocated_buffer, transferred[0])
         else:
             return transferred[0]
 
@@ -251,7 +240,7 @@
     data = _ffi.new('PostCallbackData[1]')
     newwaitobject = _ffi.new("HANDLE[1]")
     data[0].hCompletionPort = completionport
-    data[0].Overlapped = ovaddress[0]
+    data[0].Overlapped = _ffi.new("OVERLAPPED *",ovaddress[0])
     success = _kernel32.RegisterWaitForSingleObject(newwaitobject,
                                                     object,
                                                     
_ffi.cast("WAITORTIMERCALLBACK",post_to_queue_callback),
@@ -261,7 +250,27 @@
     
     return newwaitobject
 
+def ConnectPipe(address):
+    handle = _kernel32.CreateFileW(address, 
+                         _winapi.GENERIC_READ | _winapi.GENERIC_WRITE,
+                         0,
+                         _ffi.NULL,
+                         _winapi.OPEN_EXISTING,
+                         _winapi.FILE_FLAG_OVERLAPPED,
+                         _ffi.NULL)
+    return handle
+       
+
 # In CPython this function converts a windows error into a python object
 # Not sure what we should do here.
 def SetFromWindowsErr(error):
-    return error
\ No newline at end of file
+    return error
+
+def HasOverlappedIoCompleted(overlapped):
+    return (overlapped.Internal != STATUS_PENDING)
+
+
+#
+# Error Codes
+#      
+ERROR_PIPE_BUSY = 231
\ No newline at end of file
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\xE6\x03\x00\x00\x13\x11\x00\x00\xEC\x03\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x13\x11\x00\x00\x13\x11\x00\x00\xE4\x03\x00\x00\xE0\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\xDB\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\xDF\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\x31\x11\x00\x00\x0A\x01\x00\x
 
00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\xE5\x03\x00\x00\x0A\x01\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x31\x11\x00\x00\xD3\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\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\x03\x00\x00\x31\x03\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\x8F\x03\x00\x00\x6D\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x6D\x11\x00\x00\x6D\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\x4
 
A\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\x6D\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x02\x0F\x00\x00\x8A\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\x8A\x0D\x00\x00\x00\x0F\x00\x00\x8A\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x15\x0D\x00\x00\xE3\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xE6\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x92\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x8F\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x95\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x92\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x95\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\x92\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x07\x01\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\x6D\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\x92\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x9B\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x92\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xEC\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x00\x0F\x00\x00\xEC\x0D\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xEC\x0D\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x02\x09\x00\x00\xE2\x03\x00\x00\x05\x09\x00\x00\x06\x09\x00\x00\x03\x09\x00\x00\x07\x09\x00\x00\x02\x01\x00\x00\x39\x03\x00\x00\x01\x09\x00\x00\x00\x09\x00\x00\xEB\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\x91\x23CreateEventA',0,b'\x00\x00\x97\x23CreateEventW',0,b'\x00\x00\x9D\x23CreateFileA',0,b'\x00\x00\xCA\x23CreateFileW',0,b'\x00\x00\xB8\x23CreateIoCompletionPort',0,b'\x00\x00\xA6\x23CreateNamedPipeA',0,b'\x00\x00\xC0\x23CreateNamedPipeW',0,b'\x00\x00\x1E\x23CreatePipe',0,b'\x00\x00\x12\x23CreateProcessA',0,b'\x00\x00\x6C\x23CreateProcessW',0,b'\x00\x00\x63\x23DuplicateHandle',0,b'\x00\x00\xBE\x23GetCurrentProcess',0,b'\x00\x00\x4C\x23GetExitCodeProcess',0,b'\x00\x00\x87\x23GetLastError',0,b'\x00\x00\x82\x23GetModuleFileNameW',0,b'\x00\x00\x33\x23GetOverlappedResult',0,b'\x00\x00\x50\x23GetQueuedCompletionStatus',0,b'\x00\x00\xB5\x23GetStdHandle',0,b'\x00\x00\x87\x23GetVersion',0,b'\x00\x00\x5D\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\x7B\x23SetErrorMode',0,b'\x00\x00\xD8\x23SetEvent',0,b'\x00\x00\x57\x23SetNamedPipeHandleState',0,b'\x00\x00\x48\x23TerminateProcess',0,b'\x00\x00\x3F\x23WSARecv',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\x7E\x23WaitForSingleObject',0,b'\x00\x00\x78\x23_get_osfhandle',0,b'\x00\x00\x10\x23_getch',0,b'\x00\x00\x10\x23_getche',0,b'\x00\x00\x8C\x23_getwch',0,b'\x00\x00\x8C\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\x8E\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\x89\x23_ungetwch',0,b'\x00\x00\xB0\x23socket',0),
-    _struct_unions = 
((b'\x00\x00\x00\xE9\x00\x00\x00\x03$1',b'\x00\x00\xE8\x11DUMMYSTRUCTNAME',b'\x00\x00\x15\x11Pointer'),(b'\x00\x00\x00\xE8\x00\x00\x00\x02$2',b'\x00\x00\x18\x11Offset',b'\x00\x00\x18\x11OffsetHigh'),(b'\x00\x00\x00\xE0\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\xE4\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\x8A\x11wShowWindow',b'\x00\x00\x8A\x11cbReserved2',b'\x00\x00\xEA\x11lpReserved2',b'\x00\x00\x15\x11hStdInput',b'\x00\x00\x15\x11hStdOutput',b'\x00\x00\x15\x11hStdError'),(b'\x00\x00\x00\xDF\x00\x00\x00\x02_
 
OVERLAPPED',b'\x00\x00\x18\x11Internal',b'\x00\x00\x18\x11InternalHigh',b'\x00\x00\xE9\x11DUMMYUNIONNAME',b'\x00\x00\x15\x11hEvent'),(b'\x00\x00\x00\xE2\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x15\x11hCompletionPort',b'\x00\x00\x31\x11Overlapped'),(b'\x00\x00\x00\xE3\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x18\x11nLength',b'\x00\x00\x15\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x00\xE5\x00\x00\x00\x02_WSABUF',b'\x00\x00\x18\x11len',b'\x00\x00\x13\x11buf')),
-    _typenames = 
(b'\x00\x00\x00\xE7LPFN_DISCONNECTEX',b'\x00\x00\x00\x31LPOVERLAPPED',b'\x00\x00\x00\x46LPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x1CLPPROCESS_INFORMATION',b'\x00\x00\x00\xE1LPPostCallbackData',b'\x00\x00\x00\x92LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x1BLPSTARTUPINFO',b'\x00\x00\x00\x41LPWSABUF',b'\x00\x00\x00\xDFOVERLAPPED',b'\x00\x00\x00\xE0PROCESS_INFORMATION',b'\x00\x00\x00\x92PSECURITY_ATTRIBUTES',b'\x00\x00\x00\xE2PostCallbackData',b'\x00\x00\x00\xE3SECURITY_ATTRIBUTES',b'\x00\x00\x00\x15SOCKET',b'\x00\x00\x00\xE4STARTUPINFO',b'\x00\x00\x00\x27WAITORTIMERCALLBACK',b'\x00\x00\x00\xE5WSABUF',b'\x00\x00\x00\x8Awint_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\xE9\x03\x00\x00\x13\x11\x00\x00\xEF\x03\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x13\x11\x00\x00\x13\x11\x00\x00\xE7\x03\x00\x00\xE3\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\xDE\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\xE2\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\x31\x11\x00\x00\x0A\x01\x00\x
 
00\x0A\x01\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\xE8\x03\x00\x00\x0A\x01\x00\x00\x36\x11\x00\x00\x36\x11\x00\x00\x31\x11\x00\x00\xD6\x03\x00\x00\x02\x0F\x00\x00\x01\x0D\x00\x00\x15\x11\x00\x00\x08\x01\x00\x00\x02\x0F\x00\x00\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\x03\x00\x00\x31\x03\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\x8F\x03\x00\x00\x6D\x11\x00\x00\x15\x11\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x0A\x01\x00\x00\x6D\x11\x00\x00\x6D\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\x4
 
A\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\x6D\x11\x00\x00\x0A\x01\x00\x00\x02\x0F\x00\x00\x18\x0D\x00\x00\x02\x0F\x00\x00\x8A\x0D\x00\x00\x06\x01\x00\x00\x00\x0F\x00\x00\x8A\x0D\x00\x00\x00\x0F\x00\x00\x8A\x0D\x00\x00\x10\x01\x00\x00\x00\x0F\x00\x00\x15\x0D\x00\x00\xE6\x03\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\xE9\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x92\x11\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x8F\x03\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x95\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x92\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x95\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\x92\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x07\x01\x00\x00\x07\x01\x00\x00\x07\x01\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\x6D\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\x92\x11\x00\x00\x02\x0F\x00\x00\x15\x0D\x00\x00\x9B\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x92\x11\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xEF\x0D\x00\x00\x31\x11\x00\x00\x00\x0F\x00\x00\xEF\x0D\x00\x00\x0A\x01\x00\x00\x0A\x01\x00\x00\x15\x11\x00\x00\x00\x0F\x00\x00\xEF\x0D\x00\x00\x15\x11\x00\x00\x02\x0F\x00\x00\xEF\x0D\x00\x00\x15\x11\x00\x00\x07\x01\x00\x00\x02\x0F\x00\x00\x04\x09\x00\x00\x02\x09\x00\x00\xE5\x03\x00\x00\x05\x09\x00\x00\x06\x09\x00\x00\x03\x09\x00\x00\x07\x09\x00\x00\x02\x01\x00\x00\x39\x03\x00\x00\x01\x09\x00\x00\x00\x09\x00\x00\xEE\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\x91\x23CreateEventA',0,b'\x00\x00\x97\x23CreateEventW',0,b'\x00\x00\x9D\x23CreateFileA',0,b'\x00\x00\xCA\x23CreateFileW',0,b'\x00\x00\xB8\x23CreateIoCompletionPort',0,b'\x00\x00\xA6\x23CreateNamedPipeA',0,b'\x00\x00\xC0\x23CreateNamedPipeW',0,b'\x00\x00\x1E\x23CreatePipe',0,b'\x00\x00\x12\x23CreateProcessA',0,b'\x00\x00\x6C\x23CreateProcessW',0,b'\x00\x00\x63\x23DuplicateHandle',0,b'\x00\x00\xBE\x23GetCurrentProcess',0,b'\x00\x00\x4C\x23GetExitCodeProcess',0,b'\x00\x00\x87\x23GetLastError',0,b'\x00\x00\x82\x23GetModuleFileNameW',0,b'\x00\x00\x33\x23GetOverlappedResult',0,b'\x00\x00\x50\x23GetQueuedCompletionStatus',0,b'\x00\x00\xB5\x23GetStdHandle',0,b'\x00\x00\x87\x23GetVersion',0,b'\x00\x00\xD3\x23HasOverlappedIoCompleted',0,b'\x00\x00\x5D\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\x7B\x23SetErrorMode',0,b'\x00\x00\xDB\x23SetEvent',0,b'\x00\x00\x57\x23SetNamedPipeHandleState',0,b'\x00\x00\x48\x23TerminateProcess',0,b'\x00\x00\x3F\x23WSARecv',0,b'\xFF\xFF\xFF\x1FWT_EXECUTEINWAITTHREAD',4,b'\xFF\xFF\xFF\x1FWT_EXECUTEONLYONCE',8,b'\x00\x00\x7E\x23WaitForSingleObject',0,b'\x00\x00\x78\x23_get_osfhandle',0,b'\x00\x00\x10\x23_getch',0,b'\x00\x00\x10\x23_getche',0,b'\x00\x00\x8C\x23_getwch',0,b'\x00\x00\x8C\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\x8E\x23_putwch',0,b'\x00\x00\x03\x23_setmode',0,b'\x00\x00\x00\x23_ungetch',0,b'\x00\x00\x89\x23_ungetwch',0,b'\x00\x00\xB0\x23socket',0),
+    _struct_unions = 
((b'\x00\x00\x00\xEC\x00\x00\x00\x03$1',b'\x00\x00\xEB\x11DUMMYSTRUCTNAME',b'\x00\x00\x15\x11Pointer'),(b'\x00\x00\x00\xEB\x00\x00\x00\x02$2',b'\x00\x00\x18\x11Offset',b'\x00\x00\x18\x11OffsetHigh'),(b'\x00\x00\x00\xE3\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\xE7\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\x8A\x11wShowWindow',b'\x00\x00\x8A\x11cbReserved2',b'\x00\x00\xED\x11lpReserved2',b'\x00\x00\x15\x11hStdInput',b'\x00\x00\x15\x11hStdOutput',b'\x00\x00\x15\x11hStdError'),(b'\x00\x00\x00\xE2\x00\x00\x00\x02_
 
OVERLAPPED',b'\x00\x00\x18\x11Internal',b'\x00\x00\x18\x11InternalHigh',b'\x00\x00\xEC\x11DUMMYUNIONNAME',b'\x00\x00\x15\x11hEvent'),(b'\x00\x00\x00\xE5\x00\x00\x00\x02_PostCallbackData',b'\x00\x00\x15\x11hCompletionPort',b'\x00\x00\x31\x11Overlapped'),(b'\x00\x00\x00\xE6\x00\x00\x00\x02_SECURITY_ATTRIBUTES',b'\x00\x00\x18\x11nLength',b'\x00\x00\x15\x11lpSecurityDescriptor',b'\x00\x00\x01\x11bInheritHandle'),(b'\x00\x00\x00\xE8\x00\x00\x00\x02_WSABUF',b'\x00\x00\x18\x11len',b'\x00\x00\x13\x11buf')),
+    _typenames = 
(b'\x00\x00\x00\xEALPFN_DISCONNECTEX',b'\x00\x00\x00\x31LPOVERLAPPED',b'\x00\x00\x00\x46LPOVERLAPPED_COMPLETION_ROUTINE',b'\x00\x00\x00\x1CLPPROCESS_INFORMATION',b'\x00\x00\x00\xE4LPPostCallbackData',b'\x00\x00\x00\x92LPSECURITY_ATTRIBUTES',b'\x00\x00\x00\x1BLPSTARTUPINFO',b'\x00\x00\x00\x41LPWSABUF',b'\x00\x00\x00\xE2OVERLAPPED',b'\x00\x00\x00\xE3PROCESS_INFORMATION',b'\x00\x00\x00\x92PSECURITY_ATTRIBUTES',b'\x00\x00\x00\xE5PostCallbackData',b'\x00\x00\x00\xE6SECURITY_ATTRIBUTES',b'\x00\x00\x00\x15SOCKET',b'\x00\x00\x00\xE7STARTUPINFO',b'\x00\x00\x00\x27WAITORTIMERCALLBACK',b'\x00\x00\x00\xE8WSABUF',b'\x00\x00\x00\x8Awint_t'),
 )
diff --git a/lib_pypy/_winapi.py b/lib_pypy/_winapi.py
--- a/lib_pypy/_winapi.py
+++ b/lib_pypy/_winapi.py
@@ -222,6 +222,8 @@
 PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000
 PIPE_REJECT_REMOTE_CLIENTS = 0x00000008
 
+PIPE_UNLIMITED_INSTANCES = 255
+
 GENERIC_READ   =  0x80000000
 GENERIC_WRITE  =  0x40000000
 GENERIC_EXECUTE=  0x20000000
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to