| 955 | } |
| 956 | |
| 957 | BOOL WINAPI KbCreateSystemThread( |
| 958 | ULONG ProcessId, |
| 959 | WdkTypes::PVOID ThreadRoutine, |
| 960 | WdkTypes::PVOID Argument, |
| 961 | OUT OPTIONAL WdkTypes::CLIENT_ID* ClientId, |
| 962 | OUT OPTIONAL WdkTypes::HANDLE* hThread |
| 963 | ) { |
| 964 | if (!ProcessId) return FALSE; |
| 965 | KB_CREATE_SYSTEM_THREAD_IN Input = {}; |
| 966 | KB_CREATE_USER_SYSTEM_THREAD_OUT Output = {}; |
| 967 | Input.AssociatedProcessId = ProcessId; |
| 968 | Input.ThreadRoutine = ThreadRoutine; |
| 969 | Input.Argument = Argument; |
| 970 | BOOL Status = KbSendRequest(Ctls::KbCreateSystemThread, &Input, sizeof(Input), &Output, sizeof(Output)); |
| 971 | if (ClientId) *ClientId = Output.ClientId; |
| 972 | if (hThread) |
| 973 | *hThread = Output.hThread; |
| 974 | else |
| 975 | Descriptors::KbCloseHandle(Output.hThread); |
| 976 | return Status; |
| 977 | } |
| 978 | |
| 979 | BOOL WINAPI KbSuspendProcess(ULONG ProcessId) |
| 980 | { |
nothing calls this directly
no test coverage detected