diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 9a6de16..38ded31 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -124,7 +124,7 @@
 @ stdcall NtCreateEvent(long long long long long)
 @ stub NtCreateEventPair
 @ stdcall NtCreateFile(ptr long ptr ptr long long long ptr long long ptr)
-@ stub NtCreateIoCompletion
+@ stdcall NtCreateIoCompletion(ptr long ptr long)
 # @ stub NtCreateJobObject
 # @ stub NtCreateJobSet
 @ stdcall NtCreateKey(ptr long ptr long ptr long long)
@@ -285,7 +285,7 @@
 @ stdcall NtReleaseMutant(long ptr)
 @ stub NtReleaseProcessMutant
 @ stdcall NtReleaseSemaphore(long long ptr)
-@ stub NtRemoveIoCompletion
+@ stdcall NtRemoveIoCompletion(ptr ptr ptr ptr ptr)
 # @ stub NtRemoveProcessDebug
 # @ stub NtRenameKey
 @ stdcall NtReplaceKey(ptr long ptr)
@@ -328,7 +328,7 @@
 @ stdcall NtSetInformationThread(long long ptr long)
 @ stdcall NtSetInformationToken(long long ptr long)
 @ stdcall NtSetIntervalProfile(long long)
-@ stub NtSetIoCompletion
+@ stdcall NtSetIoCompletion(ptr long ptr long long)
 @ stub NtSetLdtEntries
 @ stub NtSetLowEventPair
 @ stub NtSetLowWaitHighEventPair
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 3cf448f..eb4341b 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -842,3 +842,29 @@
     }
     return STATUS_SUCCESS;
 }
+
+NTSTATUS WINAPI NtCreateIoCompletion( PHANDLE CompletionPort, ACCESS_MASK DesiredAccess,
+                                      POBJECT_ATTRIBUTES ObjectAttributes, ULONG NumberOfConcurrentThreads )
+{
+    FIXME("(%p, %lx, %p, %ld)\n", CompletionPort, DesiredAccess,
+          ObjectAttributes, NumberOfConcurrentThreads);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS WINAPI NtSetIoCompletion( HANDLE CompletionPort, ULONG_PTR CompletionKey,
+                                   PIO_STATUS_BLOCK iosb, ULONG NumberOfBytesTransferred,
+                                   ULONG NumberOfBytesToTransfer )
+{
+    FIXME("(%p, %lx, %p, %ld, %ld)\n", CompletionPort, CompletionKey,
+          iosb, NumberOfBytesTransferred, NumberOfBytesToTransfer);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS WINAPI NtRemoveIoCompletion( HANDLE CompletionPort, PULONG_PTR CompletionKey,
+                                      PIO_STATUS_BLOCK iosb, PULONG OperationStatus,
+                                      PLARGE_INTEGER WaitTime )
+{
+    FIXME("(%p, %p, %p, %p, %p)\n", CompletionPort, CompletionKey,
+          iosb, OperationStatus, WaitTime);
+    return STATUS_NOT_IMPLEMENTED;
+}
diff --git a/include/winternl.h b/include/winternl.h
index e3548d4..973f3e7 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -1848,7 +1848,7 @@
 NTSTATUS  WINAPI NtRegisterThreadTerminatePort(HANDLE); 
 NTSTATUS  WINAPI NtReleaseMutant(HANDLE,PLONG);
 NTSTATUS  WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
-NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG,PULONG,PIO_STATUS_BLOCK,PLARGE_INTEGER);
+NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PIO_STATUS_BLOCK,PULONG,PLARGE_INTEGER);
 NTSTATUS  WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
 NTSTATUS  WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
 NTSTATUS  WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
@@ -1877,7 +1877,7 @@
 NTSTATUS  WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
 NTSTATUS  WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
 NTSTATUS  WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
-NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
+NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,PIO_STATUS_BLOCK,ULONG,ULONG);
 NTSTATUS  WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
 NTSTATUS  WINAPI NtSetLowEventPair(HANDLE); 
 NTSTATUS  WINAPI NtSetLowWaitHighEventPair(HANDLE); 
@@ -2331,6 +2331,12 @@
 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
 
+typedef struct _FILE_COMPLETION_INFORMATION {
+    HANDLE CompletionPort;
+    ULONG_PTR CompletionKey;
+} FILE_COMPLETION_INFORMATION;
+typedef FILE_COMPLETION_INFORMATION *PFILE_COMPLETION_INFORMATION;
+
 /* list manipulation macros */
 #define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
 #define InsertHeadList(le,e)    do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
