Merge pull request #4099 from cheatfate/asyncdispatch2

Proper definitions for functions СreateIoCompletionPort and GetQueuedCompletionStatus
This commit is contained in:
Andreas Rumpf 2016-04-26 16:53:40 +02:00
commit f9d9cdd1ee
2 changed files with 6 additions and 4 deletions

View file

@ -368,7 +368,7 @@ proc processTimers(p: PDispatcherBase) =
when defined(windows) or defined(nimdoc): when defined(windows) or defined(nimdoc):
import winlean, sets, hashes import winlean, sets, hashes
type type
CompletionKey = Dword CompletionKey = ULONG_PTR
CompletionData* = object CompletionData* = object
fd*: AsyncFD # TODO: Rename this. fd*: AsyncFD # TODO: Rename this.
@ -431,7 +431,7 @@ when defined(windows) or defined(nimdoc):
if timeout == -1: winlean.INFINITE if timeout == -1: winlean.INFINITE
else: timeout.int32 else: timeout.int32
var lpNumberOfBytesTransferred: Dword var lpNumberOfBytesTransferred: Dword
var lpCompletionKey: ULONG var lpCompletionKey: ULONG_PTR
var customOverlapped: PCustomOverlapped var customOverlapped: PCustomOverlapped
let res = getQueuedCompletionStatus(p.ioPort, let res = getQueuedCompletionStatus(p.ioPort,
addr lpNumberOfBytesTransferred, addr lpCompletionKey, addr lpNumberOfBytesTransferred, addr lpCompletionKey,

View file

@ -36,6 +36,8 @@ type
DWORD* = int32 DWORD* = int32
PDWORD* = ptr DWORD PDWORD* = ptr DWORD
LPINT* = ptr int32 LPINT* = ptr int32
ULONG_PTR* = uint
PULONG_PTR* = ptr uint
HDC* = Handle HDC* = Handle
HGLRC* = Handle HGLRC* = Handle
@ -759,12 +761,12 @@ const
ERROR_NETNAME_DELETED* = 64 ERROR_NETNAME_DELETED* = 64
proc createIoCompletionPort*(FileHandle: Handle, ExistingCompletionPort: Handle, proc createIoCompletionPort*(FileHandle: Handle, ExistingCompletionPort: Handle,
CompletionKey: DWORD, CompletionKey: ULONG_PTR,
NumberOfConcurrentThreads: DWORD): Handle{.stdcall, NumberOfConcurrentThreads: DWORD): Handle{.stdcall,
dynlib: "kernel32", importc: "CreateIoCompletionPort".} dynlib: "kernel32", importc: "CreateIoCompletionPort".}
proc getQueuedCompletionStatus*(CompletionPort: Handle, proc getQueuedCompletionStatus*(CompletionPort: Handle,
lpNumberOfBytesTransferred: PDWORD, lpCompletionKey: PULONG, lpNumberOfBytesTransferred: PDWORD, lpCompletionKey: PULONG_PTR,
lpOverlapped: ptr POVERLAPPED, lpOverlapped: ptr POVERLAPPED,
dwMilliseconds: DWORD): WINBOOL{.stdcall, dwMilliseconds: DWORD): WINBOOL{.stdcall,
dynlib: "kernel32", importc: "GetQueuedCompletionStatus".} dynlib: "kernel32", importc: "GetQueuedCompletionStatus".}