PopCreatePowerThread
NTSTATUS __fastcall PopCreatePowerThread(KSTART_ROUTINE *a1, void *a2){
NTSTATUS result;
NTSTATUS v3;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
void *ThreadHandle;
PVOID Object;
memset(&ObjectAttributes.Length + 1, 0, 20);
memset(&ObjectAttributes.Attributes + 1, 0, 20);
Object = 0i64;
ThreadHandle = 0i64;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 512;
result = PsCreateSystemThread(&ThreadHandle, 0x1FFFFFu, &ObjectAttributes, 0i64, 0i64, a1, a2);
if( result >= 0 )
{
v3 = ObReferenceObjectByHandleWithTag(
ThreadHandle,
0x1FFFFFu,
(POBJECT_TYPE)PsThreadType,
0,
0x72496F50u,
&Object,
0i64);
ZwClose(ThreadHandle);
if( v3 >= 0 )
{
KeSetActualBasePriorityThread((__int64)Object, 13);
ObfDereferenceObjectWithTag(Object, 0x72496F50ui64);
}
return 0;
}
return result;
}Referenced by:
PopCreateDynamicIrpWorker
PopInitializeIrpWorkers