From 2a2a3d6c39e08a74522648d2f329f0de4fe74027 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Tue, 19 Apr 2016 03:04:44 +0300 Subject: [PATCH] CompletionKey parameter for functions CreateIoCompletionPort, GetQueuedCompletionStatus must be 64bit size on amd64 and 32bit size on x86. --- lib/pure/asyncdispatch.nim | 4 ++-- lib/windows/winlean.nim | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 01b53cb12c..a4800284bc 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -368,7 +368,7 @@ proc processTimers(p: PDispatcherBase) = when defined(windows) or defined(nimdoc): import winlean, sets, hashes type - CompletionKey = Dword + CompletionKey = ULONG_PTR CompletionData* = object fd*: AsyncFD # TODO: Rename this. @@ -431,7 +431,7 @@ when defined(windows) or defined(nimdoc): if timeout == -1: winlean.INFINITE else: timeout.int32 var lpNumberOfBytesTransferred: Dword - var lpCompletionKey: ULONG + var lpCompletionKey: ULONG_PTR var customOverlapped: PCustomOverlapped let res = getQueuedCompletionStatus(p.ioPort, addr lpNumberOfBytesTransferred, addr lpCompletionKey, diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim index a08a067fa8..de9898dce9 100644 --- a/lib/windows/winlean.nim +++ b/lib/windows/winlean.nim @@ -36,6 +36,8 @@ type DWORD* = int32 PDWORD* = ptr DWORD LPINT* = ptr int32 + ULONG_PTR* = uint + PULONG_PTR* = ptr uint HDC* = Handle HGLRC* = Handle @@ -759,12 +761,12 @@ const ERROR_NETNAME_DELETED* = 64 proc createIoCompletionPort*(FileHandle: Handle, ExistingCompletionPort: Handle, - CompletionKey: DWORD, + CompletionKey: ULONG_PTR, NumberOfConcurrentThreads: DWORD): Handle{.stdcall, dynlib: "kernel32", importc: "CreateIoCompletionPort".} proc getQueuedCompletionStatus*(CompletionPort: Handle, - lpNumberOfBytesTransferred: PDWORD, lpCompletionKey: PULONG, + lpNumberOfBytesTransferred: PDWORD, lpCompletionKey: PULONG_PTR, lpOverlapped: ptr POVERLAPPED, dwMilliseconds: DWORD): WINBOOL{.stdcall, dynlib: "kernel32", importc: "GetQueuedCompletionStatus".}