@@ -24,13 +24,17 @@ mod _overlapped {
2424 use windows_sys:: Win32 :: {
2525 Foundation :: {
2626 ERROR_IO_PENDING , ERROR_NETNAME_DELETED , ERROR_OPERATION_ABORTED , ERROR_PIPE_BUSY ,
27- ERROR_PORT_UNREACHABLE , ERROR_SEM_TIMEOUT , INVALID_HANDLE_VALUE ,
27+ ERROR_PORT_UNREACHABLE , ERROR_SEM_TIMEOUT ,
2828 } ,
2929 Networking :: WinSock :: {
3030 SO_UPDATE_ACCEPT_CONTEXT , SO_UPDATE_CONNECT_CONTEXT , TF_REUSE_SOCKET ,
3131 } ,
3232 System :: Threading :: INFINITE ,
3333 } ;
34+ #[ pyattr( once) ]
35+ fn INVALID_HANDLE_VALUE ( _vm : & VirtualMachine ) -> isize {
36+ windows_sys:: Win32 :: Foundation :: INVALID_HANDLE_VALUE as isize
37+ }
3438 #[ pyattr]
3539 const NULL : isize = 0 ;
3640
@@ -126,7 +130,7 @@ mod _overlapped {
126130
127131 fn mark_as_completed ( ov : & mut OVERLAPPED ) {
128132 ov. Internal = 0 ;
129- if ov. hEvent != 0 {
133+ if ov. hEvent != std :: ptr :: null_mut ( ) {
130134 unsafe { windows_sys:: Win32 :: System :: Threading :: SetEvent ( ov. hEvent ) } ;
131135 }
132136 }
@@ -164,7 +168,7 @@ mod _overlapped {
164168
165169 fn WSARecv_inner (
166170 inner : & mut OverlappedInner ,
167- handle : HANDLE ,
171+ handle : isize ,
168172 buf : & [ u8 ] ,
169173 mut flags : u32 ,
170174 vm : & VirtualMachine ,
@@ -209,7 +213,7 @@ mod _overlapped {
209213 #[ pymethod]
210214 fn WSARecv (
211215 zelf : & Py < Self > ,
212- handle : HANDLE ,
216+ handle : isize ,
213217 size : u32 ,
214218 flags : u32 ,
215219 vm : & VirtualMachine ,
@@ -224,9 +228,9 @@ mod _overlapped {
224228
225229 let buf = vec ! [ 0u8 ; std:: cmp:: max( size, 1 ) as usize ] ;
226230 let buf = vm. ctx . new_bytes ( buf) ;
227- inner. handle = handle;
231+ inner. handle = handle as _ ;
228232
229- let r = Self :: WSARecv_inner ( & mut inner, handle, buf. as_bytes ( ) , flags, vm) ;
233+ let r = Self :: WSARecv_inner ( & mut inner, handle as _ , buf. as_bytes ( ) , flags, vm) ;
230234 inner. data = OverlappedData :: Read ( buf) ;
231235 r
232236 }
@@ -256,30 +260,30 @@ mod _overlapped {
256260 }
257261
258262 impl Constructor for Overlapped {
259- type Args = ( HANDLE , ) ;
263+ type Args = ( isize , ) ;
260264
261265 fn py_new ( cls : PyTypeRef , ( mut event, ) : Self :: Args , vm : & VirtualMachine ) -> PyResult {
262- if event == INVALID_HANDLE_VALUE {
266+ if event as isize == INVALID_HANDLE_VALUE as isize {
263267 event = unsafe {
264268 windows_sys:: Win32 :: System :: Threading :: CreateEventA (
265269 std:: ptr:: null ( ) ,
266270 Foundation :: TRUE ,
267271 Foundation :: FALSE ,
268272 std:: ptr:: null ( ) ,
269- )
273+ ) as isize
270274 } ;
271- if event == NULL {
275+ if event as isize == NULL {
272276 return Err ( errno_err ( vm) ) ;
273277 }
274278 }
275279
276280 let mut overlapped: OVERLAPPED = unsafe { std:: mem:: zeroed ( ) } ;
277281 if event != NULL {
278- overlapped. hEvent = event;
282+ overlapped. hEvent = event as _ ;
279283 }
280284 let inner = OverlappedInner {
281285 overlapped,
282- handle : NULL ,
286+ handle : NULL as _ ,
283287 error : 0 ,
284288 data : OverlappedData :: None ,
285289 } ;
@@ -292,29 +296,29 @@ mod _overlapped {
292296
293297 #[ pyfunction]
294298 fn CreateIoCompletionPort (
295- handle : HANDLE ,
296- port : HANDLE ,
299+ handle : isize ,
300+ port : isize ,
297301 key : usize ,
298302 concurrency : u32 ,
299303 vm : & VirtualMachine ,
300- ) -> PyResult < HANDLE > {
304+ ) -> PyResult < isize > {
301305 let r = unsafe {
302- windows_sys:: Win32 :: System :: IO :: CreateIoCompletionPort ( handle, port, key, concurrency)
306+ windows_sys:: Win32 :: System :: IO :: CreateIoCompletionPort ( handle as _ , port as _ , key, concurrency) as isize
303307 } ;
304- if r == 0 {
308+ if r as usize == 0 {
305309 return Err ( errno_err ( vm) ) ;
306310 }
307311 Ok ( r)
308312 }
309313
310314 #[ pyfunction]
311- fn GetQueuedCompletionStatus ( port : HANDLE , msecs : u32 , vm : & VirtualMachine ) -> PyResult {
315+ fn GetQueuedCompletionStatus ( port : isize , msecs : u32 , vm : & VirtualMachine ) -> PyResult {
312316 let mut bytes_transferred = 0 ;
313317 let mut completion_key = 0 ;
314318 let mut overlapped: * mut OVERLAPPED = std:: ptr:: null_mut ( ) ;
315319 let ret = unsafe {
316320 windows_sys:: Win32 :: System :: IO :: GetQueuedCompletionStatus (
317- port,
321+ port as _ ,
318322 & mut bytes_transferred,
319323 & mut completion_key,
320324 & mut overlapped,
0 commit comments