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.