[PATCH] ntdll: Implement NtCreateThreadEx.
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Mon Mar 5 21:10:30 CST 2018
From: Andrew Wesie <awesie at gmail.com>
Signed-off-by: Andrew Wesie <awesie at gmail.com>
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
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 6e996a5..b63e335 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -152,6 +152,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 9ec94d6..35e23d2 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -525,6 +525,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 6733977..98bf201 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2200,6 +2200,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
*/
--
1.9.1
More information about the wine-devel
mailing list