KeQueryDpcWatchdogInformation

NTSTATUS __stdcall KeQueryDpcWatchdogInformation(_KDPC_WATCHDOG_INFORMATION *WatchdogInformation){
  struct _KPRCB *CurrentPrcb; 
  unsigned int DpcTimeLimit; 
  unsigned int DpcWatchdogPeriod; 

  CurrentPrcb = KeGetCurrentPrcb();
  if( KeGetCurrentIrql() < 2u )
    return -1073741823;
  *(_OWORD *)&WatchdogInformation->DpcTimeLimit = 0i64;
  WatchdogInformation->Reserved = 0;
  DpcTimeLimit = CurrentPrcb->DpcTimeLimit;
  if( DpcTimeLimit )
  {
    WatchdogInformation->DpcTimeLimit = DpcTimeLimit;
    WatchdogInformation->DpcTimeCount = DpcTimeLimit - CurrentPrcb->DpcTimeCount;
  }
  DpcWatchdogPeriod = CurrentPrcb->DpcWatchdogPeriod;
  if( DpcWatchdogPeriod )
  {
    WatchdogInformation->DpcWatchdogLimit = DpcWatchdogPeriod;
    WatchdogInformation->DpcWatchdogCount = DpcWatchdogPeriod - CurrentPrcb->DpcWatchdogCount;
  }
  return 0;
}

Referenced by:

HalpCmcPollProcessor