PopBuildDeviceNotifyList
VOID __stdcall PopBuildDeviceNotifyList(_PO_DEVICE_NOTIFY_ORDER *Order){
__int128 DeferredContext;
__int64 v3;
_KTIMER Timer;
_KDPC Dpc;
memset(&Dpc, 0i64, sizeof(Dpc));
v3 = 0i64;
DeferredContext = 0i64;
memset(&Timer, 0i64, sizeof(Timer));
KeInitializeEvent((INT64)&DeferredContext, 1, 0);
KeInitializeTimerEx((INT64)&Timer, 0);
KeInitializeDpc(&Dpc, PopBuildDeviceNotifyListWatchdog, &DeferredContext);
if( (_DWORD)PopWatchdogSleepTimeout )
KiSetTimerEx(&Timer, (_LARGE_INTEGER)(-10000000i64 * (int)PopWatchdogSleepTimeout), 0i64, 0, &Dpc);
PopDiagTraceEventNoPayload(&POP_ETW_EVENT_BUILDNOTIFYLIST);
IoBuildPoDeviceNotifyList(Order);
PopDiagTraceEventNoPayload(&POP_ETW_EVENT_BUILDNOTIFYLIST_END);
if( (_DWORD)PopWatchdogSleepTimeout )
{
if( !(unsigned __int8)KeCancelTimer((INT64)&Timer) )
KeWaitForSingleObject((UINT64)&DeferredContext, 0, 0, 0, 0i64);
}
}Referenced by:
PoInitializeBroadcast
PopGracefulShutdown