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