winapi_ui_automation/um/
ioapiset.rs

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.
6use shared::basetsd::{PULONG_PTR, ULONG_PTR};
7use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, PULONG, ULONG};
8use um::minwinbase::{LPOVERLAPPED, LPOVERLAPPED_ENTRY};
9use um::winnt::HANDLE;
10extern "system" {
11    pub fn CreateIoCompletionPort(
12        FileHandle: HANDLE,
13        ExistingCompletionPort: HANDLE,
14        CompletionKey: ULONG_PTR,
15        NumberOfConcurrentThreads: DWORD,
16    ) -> HANDLE;
17    pub fn GetQueuedCompletionStatus(
18        CompletionPort: HANDLE,
19        lpNumberOfBytesTransferred: LPDWORD,
20        lpCompletionKey: PULONG_PTR,
21        lpOverlapped: *mut LPOVERLAPPED,
22        dwMilliseconds: DWORD,
23    ) -> BOOL;
24    pub fn GetQueuedCompletionStatusEx(
25        CompletionPort: HANDLE,
26        lpCompletionPortEntries: LPOVERLAPPED_ENTRY,
27        ulCount: ULONG,
28        ulNumEntriesRemoved: PULONG,
29        dwMilliseconds: DWORD,
30        fAlertable: BOOL,
31    ) -> BOOL;
32    pub fn PostQueuedCompletionStatus(
33        CompletionPort: HANDLE,
34        dwNumberOfBytesTransferred: DWORD,
35        dwCompletionKey: ULONG_PTR,
36        lpOverlapped: LPOVERLAPPED,
37    ) -> BOOL;
38    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;
48    pub fn GetOverlappedResult(
49        hFile: HANDLE,
50        lpOverlapped: LPOVERLAPPED,
51        lpNumberOfBytesTransferred: LPDWORD,
52        bWait: BOOL,
53    ) -> BOOL;
54    pub fn CancelIoEx(
55        hFile: HANDLE,
56        lpOverlapped: LPOVERLAPPED,
57    ) -> BOOL;
58    pub fn CancelIo(
59        hFile: HANDLE,
60    ) -> BOOL;
61    pub fn GetOverlappedResultEx(
62        hFile: HANDLE,
63        lpOverlapped: LPOVERLAPPED,
64        lpNumberOfBytesTransferred: LPDWORD,
65        dwMilliseconds: DWORD,
66        bAlertable: BOOL,
67    ) -> BOOL;
68    pub fn CancelSynchronousIo(
69        hThread: HANDLE,
70    ) -> BOOL;
71}