pub extern "ntdll" fn NtCreateThreadEx(
ThreadHandle: *HANDLE,
DesiredAccess: ACCESS_MASK,
ObjectAttributes: *const OBJECT.ATTRIBUTES,
ProcessHandle: HANDLE,
StartRoutine: *const USER_THREAD_START_ROUTINE,
Argument: ?PVOID,
CreateFlags: THREAD.CREATE_FLAGS,
ZeroBits: SIZE_T,
/// This value is rounded up to the nearest page.
/// If this value is larger than `StackReserve`, the reserved stack
/// size will be the rounded value of this parameter.
/// https://learn.microsoft.com/en-us/windows/win32/procthread/thread-stack-size
StackCommit: THREAD.StackSize,
StackReserve: THREAD.StackSize,
AttributeList: ?*PS.ATTRIBUTE.LIST,
) callconv(.winapi) NTSTATUS ThreadHandle: *HANDLEDesiredAccess: ACCESS_MASKObjectAttributes: *const OBJECT.ATTRIBUTESProcessHandle: HANDLEStartRoutine: *const USER_THREAD_START_ROUTINEArgument: ?PVOIDCreateFlags: THREAD.CREATE_FLAGSZeroBits: SIZE_TStackCommit: THREAD.StackSizeThis value is rounded up to the nearest page. If this value is larger than StackReserve, the reserved stack size will be the rounded value of this parameter. https://learn.microsoft.com/en-us/windows/win32/procthread/thread-stack-size
StackReserve: THREAD.StackSizeAttributeList: ?*PS.ATTRIBUTE.LIST781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797pub extern "ntdll" fn NtCreateThreadEx(
ThreadHandle: *HANDLE,
DesiredAccess: ACCESS_MASK,
ObjectAttributes: *const OBJECT.ATTRIBUTES,
ProcessHandle: HANDLE,
StartRoutine: *const USER_THREAD_START_ROUTINE,
Argument: ?PVOID,
CreateFlags: THREAD.CREATE_FLAGS,
ZeroBits: SIZE_T,
/// This value is rounded up to the nearest page.
/// If this value is larger than `StackReserve`, the reserved stack
/// size will be the rounded value of this parameter.
/// https://learn.microsoft.com/en-us/windows/win32/procthread/thread-stack-size
StackCommit: THREAD.StackSize,
StackReserve: THREAD.StackSize,
AttributeList: ?*PS.ATTRIBUTE.LIST,
) callconv(.winapi) NTSTATUS