From 091d9748e3bc4494a2f1f6ee37a699fe98f875d4 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 4 Sep 2008 22:47:13 +0200 Subject: [PATCH] ntdll: Add stubs for all the job object functions. --- dlls/ntdll/ntdll.spec | 28 +++++++++---------- dlls/ntdll/sync.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/winternl.h | 7 +++++ 3 files changed, 97 insertions(+), 14 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 696124ed642..617d25d0d0d 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -105,7 +105,7 @@ @ stdcall NtAllocateUuids(ptr ptr ptr) @ stdcall NtAllocateVirtualMemory(long ptr ptr ptr long long) @ stdcall NtAreMappedFilesTheSame(ptr ptr) -# @ stub NtAssignProcessToJobObject +@ stdcall NtAssignProcessToJobObject(long long) @ stub NtCallbackReturn # @ stub NtCancelDeviceWakeupRequest @ stdcall NtCancelIoFile(long ptr) @@ -125,7 +125,7 @@ @ stub NtCreateEventPair @ stdcall NtCreateFile(ptr long ptr ptr long long long ptr long long ptr) @ stdcall NtCreateIoCompletion(ptr long ptr long) -# @ stub NtCreateJobObject +@ stdcall NtCreateJobObject(ptr long ptr) # @ stub NtCreateJobSet @ stdcall NtCreateKey(ptr long ptr long ptr long long) # @ stub NtCreateKeyedEvent @@ -184,7 +184,7 @@ @ stub NtImpersonateThread @ stub NtInitializeRegistry @ stdcall NtInitiatePowerAction (long long long long) -# @ stub NtIsProcessInJob +@ stdcall NtIsProcessInJob(long long) # @ stub NtIsSystemResumeAutomatic @ stdcall NtListenPort(ptr ptr) @ stdcall NtLoadDriver(ptr) @@ -208,7 +208,7 @@ @ stub NtOpenEventPair @ stdcall NtOpenFile(ptr long ptr ptr long long) @ stdcall NtOpenIoCompletion(ptr long ptr) -# @ stub NtOpenJobObject +@ stdcall NtOpenJobObject(ptr long ptr) @ stdcall NtOpenKey(ptr long ptr) # @ stub NtOpenKeyedEvent @ stdcall NtOpenMutant(ptr long ptr) @@ -243,7 +243,7 @@ @ stdcall NtQueryFullAttributesFile(ptr ptr) @ stdcall NtQueryInformationAtom(long long ptr long ptr) @ stdcall NtQueryInformationFile(long ptr ptr long long) -# @ stub NtQueryInformationJobObject +@ stdcall NtQueryInformationJobObject(long long ptr long ptr) @ stub NtQueryInformationPort @ stdcall NtQueryInformationProcess(long long ptr long ptr) @ stdcall NtQueryInformationThread(long long ptr long ptr) @@ -321,7 +321,7 @@ @ stub NtSetHighWaitLowThread # @ stub NtSetInformationDebugObject @ stdcall NtSetInformationFile(long long long long long) -# @ stub NtSetInformationJobObject +@ stdcall NtSetInformationJobObject(long long ptr long) @ stdcall NtSetInformationKey(long long ptr long) @ stdcall NtSetInformationObject(long long ptr long) @ stdcall NtSetInformationProcess(long long long long) @@ -353,7 +353,7 @@ # @ stub NtSuspendProcess @ stdcall NtSuspendThread(long ptr) @ stub NtSystemDebugControl -# @ stub NtTerminateJobObject +@ stdcall NtTerminateJobObject(long long) @ stdcall NtTerminateProcess(long long) @ stdcall NtTerminateThread(long long) @ stub NtTestAlert @@ -950,7 +950,7 @@ @ stdcall ZwAllocateUuids(ptr ptr ptr) NtAllocateUuids @ stdcall ZwAllocateVirtualMemory(long ptr ptr ptr long long) NtAllocateVirtualMemory @ stdcall ZwAreMappedFilesTheSame(ptr ptr) NtAreMappedFilesTheSame -# @ stub ZwAssignProcessToJobObject +@ stdcall ZwAssignProcessToJobObject(long long) NtAssignProcessToJobObject @ stub ZwCallbackReturn # @ stub ZwCancelDeviceWakeupRequest @ stdcall ZwCancelIoFile(long ptr) NtCancelIoFile @@ -970,7 +970,7 @@ @ stub ZwCreateEventPair @ stdcall ZwCreateFile(ptr long ptr ptr long long long ptr long long ptr) NtCreateFile @ stdcall ZwCreateIoCompletion(ptr long ptr long) NtCreateIoCompletion -# @ stub ZwCreateJobObject +@ stdcall ZwCreateJobObject(ptr long ptr) NtCreateJobObject # @ stub ZwCreateJobSet @ stdcall ZwCreateKey(ptr long ptr long ptr long long) NtCreateKey # @ stub ZwCreateKeyedEvent @@ -1028,7 +1028,7 @@ @ stub ZwImpersonateThread @ stub ZwInitializeRegistry @ stdcall ZwInitiatePowerAction(long long long long) NtInitiatePowerAction -# @ stub ZwIsProcessInJob +@ stdcall ZwIsProcessInJob(long long) NtIsProcessInJob # @ stub ZwIsSystemResumeAutomatic @ stdcall ZwListenPort(ptr ptr) NtListenPort @ stdcall ZwLoadDriver(ptr) NtLoadDriver @@ -1052,7 +1052,7 @@ @ stub ZwOpenEventPair @ stdcall ZwOpenFile(ptr long ptr ptr long long) NtOpenFile @ stdcall ZwOpenIoCompletion(ptr long ptr) NtOpenIoCompletion -# @ stub ZwOpenJobObject +@ stdcall ZwOpenJobObject(ptr long ptr) NtOpenJobObject @ stdcall ZwOpenKey(ptr long ptr) NtOpenKey # @ stub ZwOpenKeyedEvent @ stdcall ZwOpenMutant(ptr long ptr) NtOpenMutant @@ -1087,7 +1087,7 @@ @ stdcall ZwQueryFullAttributesFile(ptr ptr) NtQueryFullAttributesFile @ stdcall ZwQueryInformationAtom(long long ptr long ptr) NtQueryInformationAtom @ stdcall ZwQueryInformationFile(long ptr ptr long long) NtQueryInformationFile -# @ stub ZwQueryInformationJobObject +@ stdcall ZwQueryInformationJobObject(long long ptr long ptr) NtQueryInformationJobObject @ stub ZwQueryInformationPort @ stdcall ZwQueryInformationProcess(long long ptr long ptr) NtQueryInformationProcess @ stdcall ZwQueryInformationThread(long long ptr long ptr) NtQueryInformationThread @@ -1165,7 +1165,7 @@ @ stub ZwSetHighWaitLowThread # @ stub ZwSetInformationDebugObject @ stdcall ZwSetInformationFile(long long long long long) NtSetInformationFile -# @ stub ZwSetInformationJobObject +@ stdcall ZwSetInformationJobObject(long long ptr long) NtSetInformationJobObject @ stdcall ZwSetInformationKey(long long ptr long) NtSetInformationKey @ stdcall ZwSetInformationObject(long long ptr long) NtSetInformationObject @ stdcall ZwSetInformationProcess(long long long long) NtSetInformationProcess @@ -1197,7 +1197,7 @@ # @ stub ZwSuspendProcess @ stdcall ZwSuspendThread(long ptr) NtSuspendThread @ stub ZwSystemDebugControl -# @ stub ZwTerminateJobObject +@ stdcall ZwTerminateJobObject(long long) NtTerminateJobObject @ stdcall ZwTerminateProcess(long long) NtTerminateProcess @ stdcall ZwTerminateThread(long long) NtTerminateThread @ stub ZwTestAlert diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index fb653daf2a5..0f39a80c44e 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -512,6 +512,82 @@ NTSTATUS WINAPI NtQueryMutant(IN HANDLE handle, } /* + * Jobs + */ + +/****************************************************************************** + * NtCreateJobObject [NTDLL.@] + * ZwCreateJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtCreateJobObject( PHANDLE handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ) +{ + FIXME( "stub: %p %x %s\n", handle, access, attr ? debugstr_us(attr->ObjectName) : "" ); + *handle = (HANDLE)0xdead; + return STATUS_SUCCESS; +} + +/****************************************************************************** + * NtOpenJobObject [NTDLL.@] + * ZwOpenJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtOpenJobObject( PHANDLE handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr ) +{ + FIXME( "stub: %p %x %s\n", handle, access, attr ? debugstr_us(attr->ObjectName) : "" ); + return STATUS_NOT_IMPLEMENTED; +} + +/****************************************************************************** + * NtTerminateJobObject [NTDLL.@] + * ZwTerminateJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) +{ + FIXME( "stub: %p %x\n", handle, status ); + return STATUS_SUCCESS; +} + +/****************************************************************************** + * NtQueryInformationJobObject [NTDLL.@] + * ZwQueryInformationJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtQueryInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, + ULONG len, PULONG ret_len ) +{ + FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); + return STATUS_NOT_IMPLEMENTED; +} + +/****************************************************************************** + * NtSetInformationJobObject [NTDLL.@] + * ZwSetInformationJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtSetInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, ULONG len ) +{ + FIXME( "stub: %p %u %p %u\n", handle, class, info, len ); + return STATUS_SUCCESS; +} + +/****************************************************************************** + * NtIsProcessInJob [NTDLL.@] + * ZwIsProcessInJob [NTDLL.@] + */ +NTSTATUS WINAPI NtIsProcessInJob( HANDLE process, HANDLE job ) +{ + FIXME( "stub: %p %p\n", process, job ); + return STATUS_PROCESS_NOT_IN_JOB; +} + +/****************************************************************************** + * NtAssignProcessToJobObject [NTDLL.@] + * ZwAssignProcessToJobObject [NTDLL.@] + */ +NTSTATUS WINAPI NtAssignProcessToJobObject( HANDLE job, HANDLE process ) +{ + FIXME( "stub: %p %p\n", job, process ); + return STATUS_SUCCESS; +} + +/* * Timers */ diff --git a/include/winternl.h b/include/winternl.h index f254da5696e..17b6d885b02 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1867,6 +1867,7 @@ NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid); NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG); NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID); +NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS); NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK); NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*); @@ -1881,6 +1882,7 @@ NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBU NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG); +NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER); NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN); @@ -1923,6 +1925,7 @@ NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE); NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *); @@ -1937,6 +1940,7 @@ NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTE NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG); NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); +NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *); NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN); @@ -1967,6 +1971,7 @@ NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULON NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*); NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*); NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS); +NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); @@ -2024,6 +2029,7 @@ NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID); NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS); +NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG); @@ -2050,6 +2056,7 @@ NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE); NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG); NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG); +NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS); NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG); NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG); NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID); -- 2.11.4.GIT