From 66e6d87ab86c393f189aa8d409b62b3e028ed17e Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 16 Jul 2020 10:27:34 +0200 Subject: [PATCH] ntdll: Use syscall thunks for job functions. Signed-off-by: Alexandre Julliard --- dlls/ntdll/ntdll.spec | 28 ++++++++--------- dlls/ntdll/sync.c | 68 ---------------------------------------- dlls/ntdll/unix/loader.c | 7 ----- dlls/ntdll/unixlib.h | 13 +------- 4 files changed, 15 insertions(+), 101 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 6e2553e1eef..be886de5470 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -142,7 +142,7 @@ @ stdcall NtAllocateUuids(ptr ptr ptr ptr) @ stdcall NtAllocateVirtualMemory(long ptr long ptr long long) @ stdcall NtAreMappedFilesTheSame(ptr ptr) -@ stdcall NtAssignProcessToJobObject(long long) +@ stdcall -syscall NtAssignProcessToJobObject(long long) @ stub NtCallbackReturn # @ stub NtCancelDeviceWakeupRequest @ stdcall NtCancelIoFile(long ptr) @@ -164,7 +164,7 @@ @ stub NtCreateEventPair @ stdcall -syscall NtCreateFile(ptr long ptr ptr ptr long long long long ptr long) @ stdcall NtCreateIoCompletion(ptr long ptr long) -@ stdcall NtCreateJobObject(ptr long ptr) +@ stdcall -syscall NtCreateJobObject(ptr long ptr) # @ stub NtCreateJobSet @ stdcall NtCreateKey(ptr long ptr long ptr long ptr) @ stdcall NtCreateKeyTransacted(ptr long ptr long ptr long long ptr) @@ -231,7 +231,7 @@ @ stub NtImpersonateThread @ stub NtInitializeRegistry @ stdcall NtInitiatePowerAction (long long long long) -@ stdcall NtIsProcessInJob(long long) +@ stdcall -syscall NtIsProcessInJob(long long) # @ stub NtIsSystemResumeAutomatic @ stdcall NtListenPort(ptr ptr) @ stdcall NtLoadDriver(ptr) @@ -255,7 +255,7 @@ @ stub NtOpenEventPair @ stdcall -syscall NtOpenFile(ptr long ptr ptr long long) @ stdcall NtOpenIoCompletion(ptr long ptr) -@ stdcall NtOpenJobObject(ptr long ptr) +@ stdcall -syscall NtOpenJobObject(ptr long ptr) @ stdcall NtOpenKey(ptr long ptr) @ stdcall NtOpenKeyEx(ptr long ptr long) @ stdcall NtOpenKeyTransacted(ptr long ptr long) @@ -293,7 +293,7 @@ @ stdcall NtQueryFullAttributesFile(ptr ptr) @ stdcall NtQueryInformationAtom(long long ptr long ptr) @ stdcall NtQueryInformationFile(long ptr ptr long long) -@ stdcall NtQueryInformationJobObject(long long ptr long ptr) +@ stdcall -syscall NtQueryInformationJobObject(long long ptr long ptr) @ stub NtQueryInformationPort @ stdcall NtQueryInformationProcess(long long ptr long ptr) @ stdcall NtQueryInformationThread(long long ptr long ptr) @@ -374,7 +374,7 @@ @ stub NtSetHighWaitLowThread # @ stub NtSetInformationDebugObject @ stdcall NtSetInformationFile(long ptr ptr long long) -@ stdcall NtSetInformationJobObject(long long ptr long) +@ stdcall -syscall NtSetInformationJobObject(long long ptr long) @ stdcall NtSetInformationKey(long long ptr long) @ stdcall NtSetInformationObject(long long ptr long) @ stdcall NtSetInformationProcess(long long ptr long) @@ -407,7 +407,7 @@ @ stdcall NtSuspendProcess(long) @ stdcall NtSuspendThread(long ptr) @ stdcall NtSystemDebugControl(long ptr long ptr long ptr) -@ stdcall NtTerminateJobObject(long long) +@ stdcall -syscall NtTerminateJobObject(long long) @ stdcall NtTerminateProcess(long long) @ stdcall NtTerminateThread(long long) @ stub NtTestAlert @@ -1131,7 +1131,7 @@ @ stdcall -private ZwAllocateUuids(ptr ptr ptr ptr) NtAllocateUuids @ stdcall -private ZwAllocateVirtualMemory(long ptr long ptr long long) NtAllocateVirtualMemory @ stdcall -private ZwAreMappedFilesTheSame(ptr ptr) NtAreMappedFilesTheSame -@ stdcall -private ZwAssignProcessToJobObject(long long) NtAssignProcessToJobObject +@ stdcall -private -syscall ZwAssignProcessToJobObject(long long) NtAssignProcessToJobObject @ stub ZwCallbackReturn # @ stub ZwCancelDeviceWakeupRequest @ stdcall -private ZwCancelIoFile(long ptr) NtCancelIoFile @@ -1153,7 +1153,7 @@ @ stub ZwCreateEventPair @ stdcall -private -syscall ZwCreateFile(ptr long ptr ptr ptr long long long long ptr long) NtCreateFile @ stdcall -private ZwCreateIoCompletion(ptr long ptr long) NtCreateIoCompletion -@ stdcall -private ZwCreateJobObject(ptr long ptr) NtCreateJobObject +@ stdcall -private -syscall ZwCreateJobObject(ptr long ptr) NtCreateJobObject # @ stub ZwCreateJobSet @ stdcall -private ZwCreateKey(ptr long ptr long ptr long ptr) NtCreateKey @ stdcall -private ZwCreateKeyTransacted(ptr long ptr long ptr long long ptr) NtCreateKeyTransacted @@ -1215,7 +1215,7 @@ @ stub ZwImpersonateThread @ stub ZwInitializeRegistry @ stdcall -private ZwInitiatePowerAction(long long long long) NtInitiatePowerAction -@ stdcall -private ZwIsProcessInJob(long long) NtIsProcessInJob +@ stdcall -private -syscall ZwIsProcessInJob(long long) NtIsProcessInJob # @ stub ZwIsSystemResumeAutomatic @ stdcall -private ZwListenPort(ptr ptr) NtListenPort @ stdcall -private ZwLoadDriver(ptr) NtLoadDriver @@ -1239,7 +1239,7 @@ @ stub ZwOpenEventPair @ stdcall -private -syscall ZwOpenFile(ptr long ptr ptr long long) NtOpenFile @ stdcall -private ZwOpenIoCompletion(ptr long ptr) NtOpenIoCompletion -@ stdcall -private ZwOpenJobObject(ptr long ptr) NtOpenJobObject +@ stdcall -private -syscall ZwOpenJobObject(ptr long ptr) NtOpenJobObject @ stdcall -private ZwOpenKey(ptr long ptr) NtOpenKey @ stdcall -private ZwOpenKeyEx(ptr long ptr long) NtOpenKeyEx @ stdcall -private ZwOpenKeyTransacted(ptr long ptr long) NtOpenKeyTransacted @@ -1277,7 +1277,7 @@ @ stdcall -private ZwQueryFullAttributesFile(ptr ptr) NtQueryFullAttributesFile @ stdcall -private ZwQueryInformationAtom(long long ptr long ptr) NtQueryInformationAtom @ stdcall -private ZwQueryInformationFile(long ptr ptr long long) NtQueryInformationFile -@ stdcall -private ZwQueryInformationJobObject(long long ptr long ptr) NtQueryInformationJobObject +@ stdcall -private -syscall ZwQueryInformationJobObject(long long ptr long ptr) NtQueryInformationJobObject @ stub ZwQueryInformationPort @ stdcall -private ZwQueryInformationProcess(long long ptr long ptr) NtQueryInformationProcess @ stdcall -private ZwQueryInformationThread(long long ptr long ptr) NtQueryInformationThread @@ -1358,7 +1358,7 @@ @ stub ZwSetHighWaitLowThread # @ stub ZwSetInformationDebugObject @ stdcall -private ZwSetInformationFile(long ptr ptr long long) NtSetInformationFile -@ stdcall -private ZwSetInformationJobObject(long long ptr long) NtSetInformationJobObject +@ stdcall -private -syscall ZwSetInformationJobObject(long long ptr long) NtSetInformationJobObject @ stdcall -private ZwSetInformationKey(long long ptr long) NtSetInformationKey @ stdcall -private ZwSetInformationObject(long long ptr long) NtSetInformationObject @ stdcall -private ZwSetInformationProcess(long long ptr long) NtSetInformationProcess @@ -1391,7 +1391,7 @@ @ stdcall -private ZwSuspendProcess(long) NtSuspendProcess @ stdcall -private ZwSuspendThread(long ptr) NtSuspendThread @ stdcall -private ZwSystemDebugControl(long ptr long ptr long ptr) NtSystemDebugControl -@ stdcall -private ZwTerminateJobObject(long long) NtTerminateJobObject +@ stdcall -private -syscall ZwTerminateJobObject(long long) NtTerminateJobObject @ stdcall -private ZwTerminateProcess(long long) NtTerminateProcess @ stdcall -private ZwTerminateThread(long long) NtTerminateThread @ stub ZwTestAlert diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index e50b58b76c1..36a305d7d43 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -135,74 +135,6 @@ NTSTATUS validate_open_object_attributes( const OBJECT_ATTRIBUTES *attr ) return STATUS_SUCCESS; } -/* - * Jobs - */ - -/****************************************************************************** - * NtCreateJobObject [NTDLL.@] - * ZwCreateJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtCreateJobObject( PHANDLE handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ) -{ - return unix_funcs->NtCreateJobObject( handle, access, attr ); -} - -/****************************************************************************** - * NtOpenJobObject [NTDLL.@] - * ZwOpenJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtOpenJobObject( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ) -{ - return unix_funcs->NtOpenJobObject( handle, access, attr ); -} - -/****************************************************************************** - * NtTerminateJobObject [NTDLL.@] - * ZwTerminateJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) -{ - return unix_funcs->NtTerminateJobObject( handle, status ); -} - -/****************************************************************************** - * NtQueryInformationJobObject [NTDLL.@] - * ZwQueryInformationJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtQueryInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, - ULONG len, PULONG ret_len ) -{ - return unix_funcs->NtQueryInformationJobObject( handle, class, info, len, ret_len ); -} - -/****************************************************************************** - * NtSetInformationJobObject [NTDLL.@] - * ZwSetInformationJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtSetInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, ULONG len ) -{ - return unix_funcs->NtSetInformationJobObject( handle, class, info, len ); -} - -/****************************************************************************** - * NtIsProcessInJob [NTDLL.@] - * ZwIsProcessInJob [NTDLL.@] - */ -NTSTATUS WINAPI NtIsProcessInJob( HANDLE process, HANDLE job ) -{ - return unix_funcs->NtIsProcessInJob( process, job ); -} - -/****************************************************************************** - * NtAssignProcessToJobObject [NTDLL.@] - * ZwAssignProcessToJobObject [NTDLL.@] - */ -NTSTATUS WINAPI NtAssignProcessToJobObject( HANDLE job, HANDLE process ) -{ - return unix_funcs->NtAssignProcessToJobObject( job, process ); -} - /* * Timers */ diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 03b0c032d4e..1496ae3e9f8 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1362,12 +1362,10 @@ static struct unix_funcs unix_funcs = NtAlertThread, NtAllocateVirtualMemory, NtAreMappedFilesTheSame, - NtAssignProcessToJobObject, NtCancelTimer, NtClose, NtContinue, NtCreateIoCompletion, - NtCreateJobObject, NtCreateKeyedEvent, NtCreateMailslotFile, NtCreateNamedPipeFile, @@ -1389,12 +1387,10 @@ static struct unix_funcs unix_funcs = NtGetContextThread, NtGetCurrentProcessorNumber, NtGetWriteWatch, - NtIsProcessInJob, NtLockVirtualMemory, NtMapViewOfSection, NtNotifyChangeDirectoryFile, NtOpenIoCompletion, - NtOpenJobObject, NtOpenKeyedEvent, NtOpenProcess, NtOpenSection, @@ -1406,7 +1402,6 @@ static struct unix_funcs unix_funcs = NtQueryDirectoryFile, NtQueryFullAttributesFile, NtQueryInformationFile, - NtQueryInformationJobObject, NtQueryInformationProcess, NtQueryInformationThread, NtQueryIoCompletion, @@ -1432,7 +1427,6 @@ static struct unix_funcs unix_funcs = NtResumeThread, NtSetContextThread, NtSetInformationFile, - NtSetInformationJobObject, NtSetInformationObject, NtSetInformationProcess, NtSetInformationThread, @@ -1444,7 +1438,6 @@ static struct unix_funcs unix_funcs = NtSignalAndWaitForSingleObject, NtSuspendProcess, NtSuspendThread, - NtTerminateJobObject, NtTerminateProcess, NtTerminateThread, NtUnlockVirtualMemory, diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h index 100ffee309e..5a4e9854274 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -28,7 +28,7 @@ struct msghdr; struct _DISPATCHER_CONTEXT; /* increment this when you change the function table */ -#define NTDLL_UNIXLIB_VERSION 77 +#define NTDLL_UNIXLIB_VERSION 78 struct unix_funcs { @@ -38,14 +38,11 @@ struct unix_funcs NTSTATUS (WINAPI *NtAllocateVirtualMemory)( HANDLE process, PVOID *ret, ULONG_PTR zero_bits, SIZE_T *size_ptr, ULONG type, ULONG protect ); NTSTATUS (WINAPI *NtAreMappedFilesTheSame)(PVOID addr1, PVOID addr2); - NTSTATUS (WINAPI *NtAssignProcessToJobObject)( HANDLE job, HANDLE process ); NTSTATUS (WINAPI *NtCancelTimer)( HANDLE handle, BOOLEAN *state ); NTSTATUS (WINAPI *NtClose)( HANDLE handle ); NTSTATUS (WINAPI *NtContinue)( CONTEXT *context, BOOLEAN alertable ); NTSTATUS (WINAPI *NtCreateIoCompletion)( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBUTES *attr, ULONG threads ); - NTSTATUS (WINAPI *NtCreateJobObject)( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ); NTSTATUS (WINAPI *NtCreateKeyedEvent)( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr, ULONG flags ); NTSTATUS (WINAPI *NtCreateMailslotFile)( HANDLE *handle, ULONG access, OBJECT_ATTRIBUTES *attr, @@ -97,7 +94,6 @@ struct unix_funcs ULONG (WINAPI *NtGetCurrentProcessorNumber)(void); NTSTATUS (WINAPI *NtGetWriteWatch)( HANDLE process, ULONG flags, PVOID base, SIZE_T size, PVOID *addresses, ULONG_PTR *count, ULONG *granularity ); - NTSTATUS (WINAPI *NtIsProcessInJob)( HANDLE process, HANDLE job ); NTSTATUS (WINAPI *NtLockVirtualMemory)( HANDLE process, PVOID *addr, SIZE_T *size, ULONG unknown ); NTSTATUS (WINAPI *NtMapViewOfSection)( HANDLE handle, HANDLE process, PVOID *addr_ptr, ULONG_PTR zero_bits, SIZE_T commit_size, @@ -109,8 +105,6 @@ struct unix_funcs ULONG filter, BOOLEAN subtree ); NTSTATUS (WINAPI *NtOpenIoCompletion)( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ); - NTSTATUS (WINAPI *NtOpenJobObject)( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ); NTSTATUS (WINAPI *NtOpenKeyedEvent)( HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ); NTSTATUS (WINAPI *NtOpenProcess)( HANDLE *handle, ACCESS_MASK access, @@ -135,8 +129,6 @@ struct unix_funcs FILE_NETWORK_OPEN_INFORMATION *info ); NTSTATUS (WINAPI *NtQueryInformationFile)( HANDLE hFile, IO_STATUS_BLOCK *io, void *ptr, LONG len, FILE_INFORMATION_CLASS class ); - NTSTATUS (WINAPI *NtQueryInformationJobObject)( HANDLE handle, JOBOBJECTINFOCLASS class, - void *info, ULONG len, ULONG *ret_len ); NTSTATUS (WINAPI *NtQueryInformationProcess)( HANDLE handle, PROCESSINFOCLASS class, void *info, ULONG size, ULONG *ret_len ); NTSTATUS (WINAPI *NtQueryInformationThread)( HANDLE handle, THREADINFOCLASS class, @@ -187,8 +179,6 @@ struct unix_funcs NTSTATUS (WINAPI *NtSetContextThread)( HANDLE handle, const CONTEXT *context ); NTSTATUS (WINAPI *NtSetInformationFile)( HANDLE handle, IO_STATUS_BLOCK *io, void *ptr, ULONG len, FILE_INFORMATION_CLASS class ); - NTSTATUS (WINAPI *NtSetInformationJobObject)( HANDLE handle, JOBOBJECTINFOCLASS class, - void *info, ULONG len ); NTSTATUS (WINAPI *NtSetInformationObject)( HANDLE handle, OBJECT_INFORMATION_CLASS info_class, void *ptr, ULONG len ); NTSTATUS (WINAPI *NtSetInformationProcess)( HANDLE handle, PROCESSINFOCLASS class, @@ -208,7 +198,6 @@ struct unix_funcs BOOLEAN alertable, const LARGE_INTEGER *timeout ); NTSTATUS (WINAPI *NtSuspendProcess)( HANDLE handle ); NTSTATUS (WINAPI *NtSuspendThread)( HANDLE handle, ULONG *count ); - NTSTATUS (WINAPI *NtTerminateJobObject)( HANDLE handle, NTSTATUS status ); NTSTATUS (WINAPI *NtTerminateProcess)( HANDLE handle, LONG exit_code ); NTSTATUS (WINAPI *NtTerminateThread)( HANDLE handle, LONG exit_code ); NTSTATUS (WINAPI *NtUnlockVirtualMemory)( HANDLE process, PVOID *addr,