PoEnergyContextStart
NTSTATUS __stdcall PoEnergyContextStart(ULONG_PTR BugCheckParameter1){
__int64 v1;
void *v2;
char v3;
_EX_RUNDOWN_REF *v4;
int ProcessAppId;
_KAPC_STATE ApcState;
v1 = *(_QWORD *)(*(_QWORD *)&BugCheckParameter1 + 2280i64);
v2 = *(void **)&BugCheckParameter1;
v3 = 0;
memset(&ApcState, 0, sizeof(ApcState));
if( !PopEtGlobals )
return 0;
v4 = (_EX_RUNDOWN_REF *)(*(_QWORD *)&BugCheckParameter1 + 1112i64);
if( KeGetCurrentThread()->ApcState.Process != *(_EPROCESS **)&BugCheckParameter1 )
{
if( !ExAcquireRundownProtection((_EX_RUNDOWN_REF *)(*(_QWORD *)&BugCheckParameter1 + 1112i64)) )
return -1073741558;
KiStackAttachProcess(v2, 0i64, &ApcState);
v3 = 1;
}
ProcessAppId = PopEtGetProcessAppId((INT64)v2, (INT64 *)(v1 + 448));
if( ProcessAppId >= 0 )
ProcessAppId = 0;
if( v3 )
{
KiUnstackDetachProcess(&ApcState, 0i64);
ExReleaseRundownProtection(v4);
}
return ProcessAppId;
}Referenced by:
PopEtInit
PspInsertThread