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