PpmWmiFireIdleAccountingEvent
NTSTATUS __stdcall PpmWmiFireIdleAccountingEvent(_KPRCB *Prcb, UINT64 Param1, UINT64 Param2){
UINT64 v3;
_PROCESSOR_POWER_STATE *p_PowerState;
_PROC_IDLE_ACCOUNTING *IdleAccounting;
tagWNODE_SINGLE_INSTANCE *v6;
tagWNODE_SINGLE_INSTANCE *v7;
int v8;
p_PowerState = &Prcb->PowerState;
if( !Prcb->PowerState.IdleStates )
return -1073741823;
IdleAccounting = Prcb->PowerState.IdleAccounting;
if( !IdleAccounting || !Prcb->PowerState.WmiInterfaceEnabled )
return -1073741823;
v6 = PpmAllocWmiEvent(
&Prcb->PowerState.WmiDispatchPtr,
(_GUID *)&PPM_IDLE_ACCOUNTING_EX_GUID,
416 * IdleAccounting->StateCount + 24,
v3);
v7 = v6;
if( !v6 )
return -1073741670;
PpmTranslateIdleAccounting(p_PowerState, (__int64)v6 + v6->DataBlockOffset, 0i64);
v8 = IoWMIWriteEvent(v7);
if( v8 >= 0 )
return 0;
ExFreePoolWithTag(v7, 0x774D5050u);
return v8;
}Referenced by:
No references.