| 175 | |
| 176 | _IRQL_requires_max_(PASSIVE_LEVEL) |
| 177 | NTSTATUS CreateUserThread(HANDLE hProcess, IN _UserThreadRoutine StartAddress, IN PVOID Argument, BOOLEAN CreateSuspended, OUT PHANDLE hThread, OUT PCLIENT_ID ClientId) |
| 178 | { |
| 179 | using _RtlCreateUserThread = NTSTATUS (NTAPI*)(IN HANDLE ProcessHandle, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN BOOLEAN CreateSuspended, |
| 180 | IN ULONG StackZeroBits, IN OUT PULONG StackReserved, IN OUT PULONG StackCommit, IN PVOID StartAddress, IN PVOID StartParameter, OUT PHANDLE ThreadHandle, |
| 181 | OUT PCLIENT_ID ClientID |
| 182 | ); |
| 183 | |
| 184 | static auto _CreateUserThread = static_cast<_RtlCreateUserThread>(Importer::GetKernelProcAddress(L"RtlCreateUserThread")); |
| 185 | if (_CreateUserThread) |
| 186 | return _CreateUserThread(hProcess, NULL, CreateSuspended, 0, NULL, NULL, StartAddress, Argument, hThread, ClientId); |
| 187 | |
| 188 | return STATUS_NOT_IMPLEMENTED; |
| 189 | } |
| 190 | |
| 191 | _IRQL_requires_max_(PASSIVE_LEVEL) |
| 192 | NTSTATUS CreateSystemThread(OPTIONAL HANDLE hProcess, PKSTART_ROUTINE StartAddress, PVOID Argument, OUT PHANDLE hThread, OUT PCLIENT_ID ClientId) |
no test coverage detected