PopBuildDeviceNotifyList

VOID __fastcall PopBuildDeviceNotifyList(_PO_DEVICE_NOTIFY_ORDER *Order){
  struct _KEVENT Event; 
  INT64 result[8]; 
  struct _KDPC Dpc; 
  memset((INT64)&Dpc, 0i64);
  memset(&Event, 0, sizeof(Event));
  memset((INT64)result, 0i64);
  KeInitializeEvent(&Event, SynchronizationEvent, 0);
  KeInitializeTimerEx((PKTIMER)result, NotificationTimer);
  KeInitializeDpc(&Dpc, (PKDEFERRED_ROUTINE)PopBuildDeviceNotifyListWatchdog, &Event);
  if( (_DWORD)PopWatchdogSleepTimeout )
    KiSetTimerEx((_KTIMER *)result, (_LARGE_INTEGER)(-10000000i64 * (int)PopWatchdogSleepTimeout), 0i64, 0, &Dpc);
  PopDiagTraceEventNoPayload((EVENT_DESCRIPTOR *)&POP_ETW_EVENT_BUILDNOTIFYLIST);
  IoBuildPoDeviceNotifyList(Order);
  PopDiagTraceEventNoPayload((EVENT_DESCRIPTOR *)&POP_ETW_EVENT_BUILDNOTIFYLIST_END);
  if( (_DWORD)PopWatchdogSleepTimeout )
  {
    if( !KeCancelTimer((PKTIMER)result) )
      KeWaitForSingleObject(&Event, Executive, 0, 0, 0i64);
  }
}

Referenced by:

PoInitializeBroadcast
PopGracefulShutdown