From 45e90a8373a297509f21789aaf817f455e749975 Mon Sep 17 00:00:00 2001 From: Andrew Wesie Date: Sat, 12 Nov 2016 08:37:23 -0600 Subject: ntdll: Implement NtCreateThreadEx. Signed-off-by: Andrew Wesie --- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/thread.c | 17 +++++++++++++++++ include/winternl.h | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 3c50e20a8b3..b6987830688 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -151,6 +151,7 @@ @ stdcall NtCreateSemaphore(ptr long ptr long long) @ stdcall NtCreateSymbolicLinkObject(ptr long ptr ptr) @ stub NtCreateThread +@ stdcall NtCreateThreadEx(ptr long ptr long ptr ptr long long long long ptr) @ stdcall NtCreateTimer(ptr long ptr long) @ stub NtCreateToken # @ stub NtCreateWaitablePort diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 5d45ebe0fd0..8da0779f4b2 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -599,6 +599,23 @@ static void start_thread( struct startup_info *info ) /*********************************************************************** + * NtCreateThreadEx (NTDLL.@) + */ +NTSTATUS WINAPI NtCreateThreadEx( HANDLE *handle_ptr, ACCESS_MASK access, OBJECT_ATTRIBUTES *attr, + HANDLE process, LPTHREAD_START_ROUTINE start, void *param, + ULONG flags, ULONG zero_bits, ULONG stack_commit, + ULONG stack_reserve, void *attribute_list ) +{ + FIXME( "%p, %x, %p, %p, %p, %p, %x, %x, %x, %x, %p semi-stub!\n", handle_ptr, access, attr, + process, start, param, flags, zero_bits, stack_commit, stack_reserve, attribute_list ); + + return RtlCreateUserThread( process, NULL, flags & THREAD_CREATE_FLAGS_CREATE_SUSPENDED, + NULL, stack_reserve, stack_commit, (PRTL_THREAD_START_ROUTINE)start, + param, handle_ptr, NULL ); +} + + +/*********************************************************************** * RtlCreateUserThread (NTDLL.@) */ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *descr, diff --git a/include/winternl.h b/include/winternl.h index d6f47ad3ba4..2878487c4bc 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2224,6 +2224,13 @@ typedef struct _SYSTEM_MODULE_INFORMATION SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */ } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; +#define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001 +#define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002 +#define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004 +#define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010 +#define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020 +#define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080 + /*********************************************************************** * Function declarations */ -- 2.12.2