1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::basetsd::{PULONG_PTR, ULONG_PTR};
7 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, PULONG, ULONG};
8 use um::minwinbase::{LPOVERLAPPED, LPOVERLAPPED_ENTRY};
9 use um::winnt::HANDLE;
10 extern "system" {
CreateIoCompletionPort( FileHandle: HANDLE, ExistingCompletionPort: HANDLE, CompletionKey: ULONG_PTR, NumberOfConcurrentThreads: DWORD, ) -> HANDLE11     pub fn CreateIoCompletionPort(
12         FileHandle: HANDLE,
13         ExistingCompletionPort: HANDLE,
14         CompletionKey: ULONG_PTR,
15         NumberOfConcurrentThreads: DWORD,
16     ) -> HANDLE;
GetQueuedCompletionStatus( CompletionPort: HANDLE, lpNumberOfBytesTransferred: LPDWORD, lpCompletionKey: PULONG_PTR, lpOverlapped: *mut LPOVERLAPPED, dwMilliseconds: DWORD, ) -> BOOL17     pub fn GetQueuedCompletionStatus(
18         CompletionPort: HANDLE,
19         lpNumberOfBytesTransferred: LPDWORD,
20         lpCompletionKey: PULONG_PTR,
21         lpOverlapped: *mut LPOVERLAPPED,
22         dwMilliseconds: DWORD,
23     ) -> BOOL;
GetQueuedCompletionStatusEx( CompletionPort: HANDLE, lpCompletionPortEntries: LPOVERLAPPED_ENTRY, ulCount: ULONG, ulNumEntriesRemoved: PULONG, dwMilliseconds: DWORD, fAlertable: BOOL, ) -> BOOL24     pub fn GetQueuedCompletionStatusEx(
25         CompletionPort: HANDLE,
26         lpCompletionPortEntries: LPOVERLAPPED_ENTRY,
27         ulCount: ULONG,
28         ulNumEntriesRemoved: PULONG,
29         dwMilliseconds: DWORD,
30         fAlertable: BOOL,
31     ) -> BOOL;
PostQueuedCompletionStatus( CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: ULONG_PTR, lpOverlapped: LPOVERLAPPED, ) -> BOOL32     pub fn PostQueuedCompletionStatus(
33         CompletionPort: HANDLE,
34         dwNumberOfBytesTransferred: DWORD,
35         dwCompletionKey: ULONG_PTR,
36         lpOverlapped: LPOVERLAPPED,
37     ) -> BOOL;
DeviceIoControl( hDevice: HANDLE, dwIoControlCode: DWORD, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED, ) -> BOOL38     pub fn DeviceIoControl(
39         hDevice: HANDLE,
40         dwIoControlCode: DWORD,
41         lpInBuffer: LPVOID,
42         nInBufferSize: DWORD,
43         lpOutBuffer: LPVOID,
44         nOutBufferSize: DWORD,
45         lpBytesReturned: LPDWORD,
46         lpOverlapped: LPOVERLAPPED,
47     ) -> BOOL;
GetOverlappedResult( hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: BOOL, ) -> BOOL48     pub fn GetOverlappedResult(
49         hFile: HANDLE,
50         lpOverlapped: LPOVERLAPPED,
51         lpNumberOfBytesTransferred: LPDWORD,
52         bWait: BOOL,
53     ) -> BOOL;
CancelIoEx( hFile: HANDLE, lpOverlapped: LPOVERLAPPED, ) -> BOOL54     pub fn CancelIoEx(
55         hFile: HANDLE,
56         lpOverlapped: LPOVERLAPPED,
57     ) -> BOOL;
CancelIo( hFile: HANDLE, ) -> BOOL58     pub fn CancelIo(
59         hFile: HANDLE,
60     ) -> BOOL;
GetOverlappedResultEx( hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, dwMilliseconds: DWORD, bAlertable: BOOL, ) -> BOOL61     pub fn GetOverlappedResultEx(
62         hFile: HANDLE,
63         lpOverlapped: LPOVERLAPPED,
64         lpNumberOfBytesTransferred: LPDWORD,
65         dwMilliseconds: DWORD,
66         bAlertable: BOOL,
67     ) -> BOOL;
CancelSynchronousIo( hThread: HANDLE, ) -> BOOL68     pub fn CancelSynchronousIo(
69         hThread: HANDLE,
70     ) -> BOOL;
71 }
72