summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-04-26 16:53:40 +0200
committerAndreas Rumpf <rumpf_a@web.de>2016-04-26 16:53:40 +0200
commitf9d9cdd1ee540d39ef4a91ac2819fbe6b6e235d2 (patch)
treec054d529276c96be8adaef9dbcb9b3e493b0c214 /lib
parente31ec746b96ef185d9f5fa6276518949fa889e5a (diff)
parent2a2a3d6c39e08a74522648d2f329f0de4fe74027 (diff)
downloadNim-f9d9cdd1ee540d39ef4a91ac2819fbe6b6e235d2.tar.gz
Merge pull request #4099 from cheatfate/asyncdispatch2
Proper definitions for functions СreateIoCompletionPort and GetQueuedCompletionStatus
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/asyncdispatch.nim4
-rw-r--r--lib/windows/winlean.nim6
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim
index 01b53cb12..a4800284b 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 a08a067fa..de9898dce 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".}