Module: wine Branch: refs/heads/master Commit: 9aa468d884759a56224c58d0c6cd141113834616 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9aa468d884759a56224c58d0...
Author: Mike McCormack mike@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)