Commit 9aa468d8 authored by Mike McCormack's avatar Mike McCormack Committed by Alexandre Julliard

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

Based on a patch by Rob Shearman.
parent 7f8ad07e
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
@ stdcall NtCreateEvent(long long long long long) @ stdcall NtCreateEvent(long long long long long)
@ stub NtCreateEventPair @ stub NtCreateEventPair
@ stdcall NtCreateFile(ptr long ptr ptr long long long ptr long long ptr) @ stdcall NtCreateFile(ptr long ptr ptr long long long ptr long long ptr)
@ stub NtCreateIoCompletion @ stdcall NtCreateIoCompletion(ptr long ptr long)
# @ stub NtCreateJobObject # @ stub NtCreateJobObject
# @ stub NtCreateJobSet # @ stub NtCreateJobSet
@ stdcall NtCreateKey(ptr long ptr long ptr long long) @ stdcall NtCreateKey(ptr long ptr long ptr long long)
...@@ -285,7 +285,7 @@ ...@@ -285,7 +285,7 @@
@ stdcall NtReleaseMutant(long ptr) @ stdcall NtReleaseMutant(long ptr)
@ stub NtReleaseProcessMutant @ stub NtReleaseProcessMutant
@ stdcall NtReleaseSemaphore(long long ptr) @ stdcall NtReleaseSemaphore(long long ptr)
@ stub NtRemoveIoCompletion @ stdcall NtRemoveIoCompletion(ptr ptr ptr ptr ptr)
# @ stub NtRemoveProcessDebug # @ stub NtRemoveProcessDebug
# @ stub NtRenameKey # @ stub NtRenameKey
@ stdcall NtReplaceKey(ptr long ptr) @ stdcall NtReplaceKey(ptr long ptr)
...@@ -328,7 +328,7 @@ ...@@ -328,7 +328,7 @@
@ stdcall NtSetInformationThread(long long ptr long) @ stdcall NtSetInformationThread(long long ptr long)
@ stdcall NtSetInformationToken(long long ptr long) @ stdcall NtSetInformationToken(long long ptr long)
@ stdcall NtSetIntervalProfile(long long) @ stdcall NtSetIntervalProfile(long long)
@ stub NtSetIoCompletion @ stdcall NtSetIoCompletion(ptr long ptr long long)
@ stub NtSetLdtEntries @ stub NtSetLdtEntries
@ stub NtSetLowEventPair @ stub NtSetLowEventPair
@ stub NtSetLowWaitHighEventPair @ stub NtSetLowWaitHighEventPair
......
...@@ -842,3 +842,29 @@ NTSTATUS WINAPI NtDelayExecution( BOOLEAN alertable, const LARGE_INTEGER *timeou ...@@ -842,3 +842,29 @@ NTSTATUS WINAPI NtDelayExecution( BOOLEAN alertable, const LARGE_INTEGER *timeou
} }
return STATUS_SUCCESS; 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;
}
...@@ -1848,7 +1848,7 @@ NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*); ...@@ -1848,7 +1848,7 @@ NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE); NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG); NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG); 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 NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE); NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE); NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
...@@ -1877,7 +1877,7 @@ NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID, ...@@ -1877,7 +1877,7 @@ NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,
NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG); NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG); NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE); 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 NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
NTSTATUS WINAPI NtSetLowEventPair(HANDLE); NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE); NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
...@@ -2331,6 +2331,12 @@ NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULO ...@@ -2331,6 +2331,12 @@ NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULO
NTSTATUS WINAPI LdrUnloadDll(HMODULE); NTSTATUS WINAPI LdrUnloadDll(HMODULE);
NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG); 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 */ /* list manipulation macros */
#define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le)) #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) #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment