Mike McCormack : ntdll: Stub implementations of NtCreateIoCompletion, NtSetIoCompletion, and NtRemoveIoCompletion.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Apr 19 06:03:42 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 9aa468d884759a56224c58d0c6cd141113834616
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=9aa468d884759a56224c58d0c6cd141113834616

Author: Mike McCormack <mike at codeweavers.com>
Date:   Wed Apr 19 17:26:11 2006 +0900

ntdll: Stub implementations of NtCreateIoCompletion, NtSetIoCompletion, and NtRemoveIoCompletion. 

Based on a patch by Rob Shearman.

---

 dlls/ntdll/ntdll.spec |    6 +++---
 dlls/ntdll/sync.c     |   26 ++++++++++++++++++++++++++
 include/winternl.h    |   10 ++++++++--
 3 files changed, 37 insertions(+), 5 deletions(-)

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 @@ # @ stub NtCreateDebugObject
 @ 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 @@ # @ stub NtReleaseKeyedEvent
 @ 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 @@ # @ stub NtSetInformationJobObject
 @ 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 @@ NTSTATUS WINAPI NtDelayExecution( BOOLEA
     }
     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 NtReadVirtualMemory(HAN
 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 NtSetInformationProcess
 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 LdrQueryProcessModuleInf
 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)




More information about the wine-cvs mailing list