mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
iocp support
This commit is contained in:
@@ -404,6 +404,23 @@ foreign kernel32 {
|
|||||||
) -> BOOL ---
|
) -> BOOL ---
|
||||||
|
|
||||||
GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL ---
|
GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL ---
|
||||||
|
|
||||||
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setfilecompletionnotificationmodes)
|
||||||
|
SetFileCompletionNotificationModes :: proc(FileHandle: HANDLE, Flags: u8) -> BOOL ---
|
||||||
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-createiocompletionport)
|
||||||
|
CreateIoCompletionPort :: proc(FileHandle: HANDLE, ExistingCompletionPort: HANDLE, CompletionKey: uintptr, NumberOfConcurrentThreads: DWORD) -> HANDLE ---
|
||||||
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatusex)
|
||||||
|
GetQueuedCompletionStatusEx :: proc(CompletionPort: HANDLE, lpCompletionPortEntries: ^OVERLAPPED_ENTRY, ulCount: c_ulong, ulNumEntriesRemoved: ^c_ulong, dwMilliseconds: DWORD, fAlertable: BOOL) -> BOOL ---
|
||||||
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-postqueuedcompletionstatus)
|
||||||
|
PostQueuedCompletionStatus :: proc(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: c_ulong, lpOverlapped: ^OVERLAPPED) -> BOOL ---
|
||||||
|
// [MS-Docs] (https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64)
|
||||||
|
GetTickCount64 :: proc() -> u64 ---
|
||||||
|
// [MS-Docs](https://github.com/mic101/windows/blob/master/WRK-v1.2/base/ntos/ex/keyedevent.c)
|
||||||
|
NtCreateKeyedEvent :: proc(KeyedEventHandle: ^HANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: OBJECT_ATTRIBUTES, Flags: u32) -> NTSTATUS ---
|
||||||
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation)
|
||||||
|
GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL ---
|
||||||
|
//[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatus)
|
||||||
|
GetQueuedCompletionStatus :: proc(CompletionPort: HANDLE, lpNumberOfBytesTransferred: ^DWORD, lpCompletionKey: uintptr, lpOverlapped: ^^OVERLAPPED, dwMilliseconds: DWORD) -> BOOL ---
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2450,6 +2450,20 @@ FILETIME_as_unix_nanoseconds :: proc "contextless" (ft: FILETIME) -> i64 {
|
|||||||
return (t - 116444736000000000) * 100
|
return (t - 116444736000000000) * 100
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OBJECT_ATTRIBUTES :: struct {
|
||||||
|
Length: c_ulong,
|
||||||
|
RootDirectory: HANDLE,
|
||||||
|
ObjectName: ^UNICODE_STRING,
|
||||||
|
Attributes: c_ulong,
|
||||||
|
SecurityDescriptor: rawptr,
|
||||||
|
SecurityQualityOfService: rawptr,
|
||||||
|
}
|
||||||
|
|
||||||
|
UNICODE_STRING :: struct {
|
||||||
|
Length: u16,
|
||||||
|
MaximumLength: u16,
|
||||||
|
Buffer: ^u16,
|
||||||
|
}
|
||||||
|
|
||||||
OVERLAPPED :: struct {
|
OVERLAPPED :: struct {
|
||||||
Internal: ^c_ulong,
|
Internal: ^c_ulong,
|
||||||
@@ -2459,6 +2473,13 @@ OVERLAPPED :: struct {
|
|||||||
hEvent: HANDLE,
|
hEvent: HANDLE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OVERLAPPED_ENTRY :: struct {
|
||||||
|
lpCompletionKey: c_ulong,
|
||||||
|
lpOverlapped: ^OVERLAPPED,
|
||||||
|
Internal: c_ulong,
|
||||||
|
dwNumberOfBytesTransferred: DWORD,
|
||||||
|
}
|
||||||
|
|
||||||
LPOVERLAPPED_COMPLETION_ROUTINE :: #type proc "stdcall" (
|
LPOVERLAPPED_COMPLETION_ROUTINE :: #type proc "stdcall" (
|
||||||
dwErrorCode: DWORD,
|
dwErrorCode: DWORD,
|
||||||
dwNumberOfBytesTransfered: DWORD,
|
dwNumberOfBytesTransfered: DWORD,
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ WSANETWORKEVENTS :: struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WSAEVENT :: HANDLE
|
WSAEVENT :: HANDLE
|
||||||
WSAOVERLAPPED_COMPLETION_ROUTINE :: proc(dwError: DWORD, cbTransferred: DWORD, lpOverlapped: ^OVERLAPPED, dwFlags: DWORD)
|
|
||||||
|
|
||||||
WSAID_ACCEPTEX :: GUID{0xb5367df1, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
WSAID_ACCEPTEX :: GUID{0xb5367df1, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
||||||
WSAID_GETACCEPTEXSOCKADDRS :: GUID{0xb5367df2, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
WSAID_GETACCEPTEXSOCKADDRS :: GUID{0xb5367df2, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
||||||
@@ -127,7 +126,7 @@ foreign ws2_32 {
|
|||||||
dwFlags: DWORD,
|
dwFlags: DWORD,
|
||||||
) -> SOCKET ---
|
) -> SOCKET ---
|
||||||
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaioctl)
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaioctl)
|
||||||
WSAIoctl :: proc(s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: rawptr, cbInBuffer: DWORD, lpvOutBuffer: rawptr, cbOutBuffer: DWORD, lpcbBytesReturned: ^DWORD, lpOverlapped: ^OVERLAPPED, lpCompletionRoutine: ^WSAOVERLAPPED_COMPLETION_ROUTINE) -> c_int ---
|
WSAIoctl :: proc(s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: rawptr, cbInBuffer: DWORD, lpvOutBuffer: rawptr, cbOutBuffer: DWORD, lpcbBytesReturned: ^DWORD, lpOverlapped: ^OVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE) -> c_int ---
|
||||||
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaeventselect)
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaeventselect)
|
||||||
WSAEventSelect :: proc(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: i32) -> c_int ---
|
WSAEventSelect :: proc(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: i32) -> c_int ---
|
||||||
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsawaitformultipleevents)
|
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsawaitformultipleevents)
|
||||||
|
|||||||
Reference in New Issue
Block a user