Skip to content

Instantly share code, notes, and snippets.

@swwwolf
Created December 14, 2014 21:17
Show Gist options
  • Save swwwolf/28ed963a388acf676d07 to your computer and use it in GitHub Desktop.
Save swwwolf/28ed963a388acf676d07 to your computer and use it in GitHub Desktop.
NTSTATUS
PspCreateThread(OUT PHANDLE ThreadHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle,
IN PEPROCESS ProcessPointer,
OUT PCLIENT_ID ClientId OPTIONAL,
IN PCONTEXT ThreadContext OPTIONAL,
IN PINITIAL_TEB InitialTeb OPTIONAL,
IN BOOLEAN CreateSuspended,
IN PKSTART_ROUTINE StartRoutine OPTIONAL,
IN PVOID StartContext) {
// ...
if ( PspCreateThreadNotifyRoutineCount != 0 ) {
ULONG i;
PEX_CALLBACK_ROUTINE_BLOCK CallBack;
PCREATE_THREAD_NOTIFY_ROUTINE Rtn;
for ( i = 0; i < PSP_MAX_CREATE_THREAD_NOTIFY; i++ ) {
CallBack = ExReferenceCallBackBlock(&PspCreateThreadNotifyRoutine[i]);
if ( CallBack != NULL ) {
Rtn = (PCREATE_THREAD_NOTIFY_ROUTINE)ExGetCallBackBlockRoutine(CallBack);
Rtn(Thread->Cid.UniqueProcess,
Thread->Cid.UniqueThread,
TRUE);
ExDereferenceCallBackBlock(&PspCreateThreadNotifyRoutine[i],
CallBack);
}
}
}
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment