PnpNotifyTargetDeviceChangeNotifyEntry
void __fastcall PnpNotifyTargetDeviceChangeNotifyEntry(__int64 a1, __int64 a2, int *a3, _DWORD *a4){
int SessionIdFromPDO;
_EJOB *CurrentServerSilo;
INT64 v10;
_ETHREAD *CurrentThread;
int v12;
SessionIdFromPDO = -1;
CurrentServerSilo = PsGetCurrentServerSilo();
if( *(_DWORD *)(a1 + 20) != PsGetServerSiloServiceSessionId((INT64)CurrentServerSilo) )
SessionIdFromPDO = IopGetSessionIdFromPDO(*(_DEVICE_OBJECT **)(a1 + 88));
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceExclusiveLite(*(_QWORD *)(a1 + 72), 1, v10);
if( (SessionIdFromPDO == -1 || *(_DWORD *)(a1 + 20) == SessionIdFromPDO) && !*(_BYTE *)(a1 + 58) )
{
*(_QWORD *)(a2 + 24) = *(_QWORD *)(a1 + 80);
v12 = PnpNotifyDriverCallback(a1, a2, a4);
}
else
{
*a4 = -1073741637;
v12 = -1073741808;
}
*a3 = v12;
ExReleaseResourceLite(*(PERESOURCE *)(a1 + 72));
KeLeaveCriticalRegion();
}Referenced by:
PnpProcessDeferredRegistrations