@@ -24,13 +24,17 @@ mod _overlapped {
24
24
use windows_sys:: Win32 :: {
25
25
Foundation :: {
26
26
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 ,
28
28
} ,
29
29
Networking :: WinSock :: {
30
30
SO_UPDATE_ACCEPT_CONTEXT , SO_UPDATE_CONNECT_CONTEXT , TF_REUSE_SOCKET ,
31
31
} ,
32
32
System :: Threading :: INFINITE ,
33
33
} ;
34
+ #[ pyattr( once) ]
35
+ fn INVALID_HANDLE_VALUE ( _vm : & VirtualMachine ) -> isize {
36
+ windows_sys:: Win32 :: Foundation :: INVALID_HANDLE_VALUE as isize
37
+ }
34
38
#[ pyattr]
35
39
const NULL : isize = 0 ;
36
40
@@ -126,7 +130,7 @@ mod _overlapped {
126
130
127
131
fn mark_as_completed ( ov : & mut OVERLAPPED ) {
128
132
ov. Internal = 0 ;
129
- if ov. hEvent != 0 {
133
+ if ov. hEvent != std :: ptr :: null_mut ( ) {
130
134
unsafe { windows_sys:: Win32 :: System :: Threading :: SetEvent ( ov. hEvent ) } ;
131
135
}
132
136
}
@@ -164,7 +168,7 @@ mod _overlapped {
164
168
165
169
fn WSARecv_inner (
166
170
inner : & mut OverlappedInner ,
167
- handle : HANDLE ,
171
+ handle : isize ,
168
172
buf : & [ u8 ] ,
169
173
mut flags : u32 ,
170
174
vm : & VirtualMachine ,
@@ -209,7 +213,7 @@ mod _overlapped {
209
213
#[ pymethod]
210
214
fn WSARecv (
211
215
zelf : & Py < Self > ,
212
- handle : HANDLE ,
216
+ handle : isize ,
213
217
size : u32 ,
214
218
flags : u32 ,
215
219
vm : & VirtualMachine ,
@@ -224,9 +228,9 @@ mod _overlapped {
224
228
225
229
let buf = vec ! [ 0u8 ; std:: cmp:: max( size, 1 ) as usize ] ;
226
230
let buf = vm. ctx . new_bytes ( buf) ;
227
- inner. handle = handle;
231
+ inner. handle = handle as _ ;
228
232
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) ;
230
234
inner. data = OverlappedData :: Read ( buf) ;
231
235
r
232
236
}
@@ -256,30 +260,30 @@ mod _overlapped {
256
260
}
257
261
258
262
impl Constructor for Overlapped {
259
- type Args = ( HANDLE , ) ;
263
+ type Args = ( isize , ) ;
260
264
261
265
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 {
263
267
event = unsafe {
264
268
windows_sys:: Win32 :: System :: Threading :: CreateEventA (
265
269
std:: ptr:: null ( ) ,
266
270
Foundation :: TRUE ,
267
271
Foundation :: FALSE ,
268
272
std:: ptr:: null ( ) ,
269
- )
273
+ ) as isize
270
274
} ;
271
- if event == NULL {
275
+ if event as isize == NULL {
272
276
return Err ( errno_err ( vm) ) ;
273
277
}
274
278
}
275
279
276
280
let mut overlapped: OVERLAPPED = unsafe { std:: mem:: zeroed ( ) } ;
277
281
if event != NULL {
278
- overlapped. hEvent = event;
282
+ overlapped. hEvent = event as _ ;
279
283
}
280
284
let inner = OverlappedInner {
281
285
overlapped,
282
- handle : NULL ,
286
+ handle : NULL as _ ,
283
287
error : 0 ,
284
288
data : OverlappedData :: None ,
285
289
} ;
@@ -292,29 +296,29 @@ mod _overlapped {
292
296
293
297
#[ pyfunction]
294
298
fn CreateIoCompletionPort (
295
- handle : HANDLE ,
296
- port : HANDLE ,
299
+ handle : isize ,
300
+ port : isize ,
297
301
key : usize ,
298
302
concurrency : u32 ,
299
303
vm : & VirtualMachine ,
300
- ) -> PyResult < HANDLE > {
304
+ ) -> PyResult < isize > {
301
305
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
303
307
} ;
304
- if r == 0 {
308
+ if r as usize == 0 {
305
309
return Err ( errno_err ( vm) ) ;
306
310
}
307
311
Ok ( r)
308
312
}
309
313
310
314
#[ pyfunction]
311
- fn GetQueuedCompletionStatus ( port : HANDLE , msecs : u32 , vm : & VirtualMachine ) -> PyResult {
315
+ fn GetQueuedCompletionStatus ( port : isize , msecs : u32 , vm : & VirtualMachine ) -> PyResult {
312
316
let mut bytes_transferred = 0 ;
313
317
let mut completion_key = 0 ;
314
318
let mut overlapped: * mut OVERLAPPED = std:: ptr:: null_mut ( ) ;
315
319
let ret = unsafe {
316
320
windows_sys:: Win32 :: System :: IO :: GetQueuedCompletionStatus (
317
- port,
321
+ port as _ ,
318
322
& mut bytes_transferred,
319
323
& mut completion_key,
320
324
& mut overlapped,
0 commit comments