PoEnergyContextStart
NTSTATUS __stdcall PoEnergyContextStart(PVOID BugCheckParameter1){
__int64 v1;
char v3;
struct _EX_RUNDOWN_REF *v4;
NTSTATUS ProcessAppId;
_KAPC_STATE ApcState;
v1 = *((_QWORD *)BugCheckParameter1 + 285);
v3 = 0;
memset(&ApcState, 0, sizeof(ApcState));
if( !PopEtGlobals )
return 0;
v4 = (struct _EX_RUNDOWN_REF *)((char *)BugCheckParameter1 + 1112);
if( *((PVOID *)KeGetCurrentThread() + 23) != BugCheckParameter1 )
{
if( !ExAcquireRundownProtection((PEX_RUNDOWN_REF)BugCheckParameter1 + 139) )
return -1073741558;
KiStackAttachProcess((_KPROCESS *)BugCheckParameter1, 0i64, &ApcState);
v3 = 1;
}
ProcessAppId = PopEtGetProcessAppId((INT64)BugCheckParameter1, (INT64 *)(v1 + 448));
if( ProcessAppId >= 0 )
ProcessAppId = 0;
if( v3 )
{
KiUnstackDetachProcess(&ApcState, 0i64);
ExReleaseRundownProtection(v4);
}
return ProcessAppId;
}Referenced by:
PopEtInit
PspInsertThread