From: Alex Henrie alexhenrie24@gmail.com
The stub is enough for TokenViewer.exe to start up and display its user interface.
Based on a patch by Nikolay Sivov.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45119 --- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/unix/loader.c | 1 + dlls/ntdll/unix/process.c | 12 ++++++++++++ dlls/wow64/syscall.h | 1 + include/winternl.h | 1 + 5 files changed, 16 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 80277005672..55631a04652 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -230,6 +230,7 @@ @ stdcall -norelay -syscall NtGetContextThread(long ptr) @ stdcall -syscall NtGetCurrentProcessorNumber() # @ stub NtGetDevicePowerState +@ stdcall -syscall NtGetNextProcess(ptr long long long ptr) @ stdcall -syscall NtGetNextThread(ptr ptr long long long ptr) @ stdcall -syscall NtGetNlsSectionPtr(long long long ptr ptr) # @ stub NtGetPlugPlayEvent diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 28f0c4bf245..17e68a42030 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -192,6 +192,7 @@ static void * const syscalls[] = NtFsControlFile, NtGetContextThread, NtGetCurrentProcessorNumber, + NtGetNextProcess, NtGetNextThread, NtGetNlsSectionPtr, NtGetWriteWatch, diff --git a/dlls/ntdll/unix/process.c b/dlls/ntdll/unix/process.c index fa8022d9968..a349a850110 100644 --- a/dlls/ntdll/unix/process.c +++ b/dlls/ntdll/unix/process.c @@ -1776,6 +1776,18 @@ NTSTATUS WINAPI NtResumeProcess( HANDLE handle ) }
+/********************************************************************** + * NtGetNextProcess (NTDLL.@) + */ +NTSTATUS WINAPI NtGetNextProcess( HANDLE process, ACCESS_MASK access, ULONG attributes, + ULONG flags, HANDLE *handle ) +{ + FIXME( "process %p, access %#x, attributes %#x, flags %#x, handle %p. stub!\n", + process, (int)access, (int)attributes, (int)flags, handle ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * NtDebugActiveProcess (NTDLL.@) */ diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h index 59586d3fbfa..c586ab5b2bb 100644 --- a/dlls/wow64/syscall.h +++ b/dlls/wow64/syscall.h @@ -96,6 +96,7 @@ SYSCALL_ENTRY( NtFsControlFile ) \ SYSCALL_ENTRY( NtGetContextThread ) \ SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \ + SYSCALL_ENTRY( NtGetNextProcess ) \ SYSCALL_ENTRY( NtGetNextThread ) \ SYSCALL_ENTRY( NtGetNlsSectionPtr ) \ SYSCALL_ENTRY( NtGetWriteWatch ) \ diff --git a/include/winternl.h b/include/winternl.h index 455e199f3e1..b59b61e6b02 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -4180,6 +4180,7 @@ NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*); NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void); +NTSYSAPI NTSTATUS WINAPI NtGetNextProcess(HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*); NTSYSAPI NTSTATUS WINAPI NtGetNextThread(HANDLE,HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*); NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*); NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);