From 23d3b123db9599d216e1b5f2b2b33e91af2043a6 Mon Sep 17 00:00:00 2001 From: Austin English Date: Tue, 15 Dec 2015 01:51:05 -0600 Subject: [PATCH] ntdll: Add RtlCreateUserProcess stub. Signed-off-by: Austin English Signed-off-by: Sebastian Lackner Signed-off-by: Alexandre Julliard --- dlls/ntdll/ntdll.spec | 2 +- dlls/ntdll/rtl.c | 13 +++++++++++++ include/winternl.h | 10 ++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index a96edb173b6..4e49709248d 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -506,7 +506,7 @@ @ stdcall RtlCreateTimerQueue(ptr) @ stdcall RtlCreateUnicodeString(ptr wstr) @ stdcall RtlCreateUnicodeStringFromAsciiz(ptr str) -@ stub RtlCreateUserProcess +@ stdcall RtlCreateUserProcess(ptr long ptr ptr ptr long long long long ptr) @ stub RtlCreateUserSecurityObject @ stdcall RtlCreateUserThread(long ptr long ptr long long ptr ptr ptr ptr) @ stub RtlCustomCPToUnicodeN diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 74ad35a57cf..f699cff9a10 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -1613,3 +1613,16 @@ void WINAPI RtlInsertElementGenericTableAvl(PRTL_AVL_TABLE table, void *buffer, { FIXME("%p %p %u %p: stub\n", table, buffer, size, element); } + +/********************************************************************** + * RtlCreateUserProcess [NTDLL.@] + */ +NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING *path, ULONG attributes, RTL_USER_PROCESS_PARAMETERS *parameters, + SECURITY_DESCRIPTOR *process_descriptor, SECURITY_DESCRIPTOR *thread_descriptor, + HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE exception, + RTL_USER_PROCESS_INFORMATION *info) +{ + FIXME("(%p %u %p %p %p %p %d %p %p %p): stub\n", path, attributes, parameters, process_descriptor, thread_descriptor, + parent, inherit, debug, exception, info); + return STATUS_NOT_IMPLEMENTED; +} diff --git a/include/winternl.h b/include/winternl.h index 42ecb5b99b8..3494c006484 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1893,6 +1893,15 @@ typedef struct _LPC_MESSAGE { UCHAR Data[ANYSIZE_ARRAY]; } LPC_MESSAGE, *PLPC_MESSAGE; +typedef struct _RTL_USER_PROCESS_INFORMATION +{ + ULONG Length; + HANDLE Process; + HANDLE Thread; + CLIENT_ID ClientId; + SECTION_IMAGE_INFORMATION ImageInformation; +} RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION; + typedef enum _SHUTDOWN_ACTION { ShutdownNoReboot, ShutdownReboot, @@ -2393,6 +2402,7 @@ NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE); NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG); NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR); NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR); +NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*); NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*); NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR); NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);