PnpNotifyTargetDeviceChangeNotifyEntry

VOID __fastcall PnpNotifyTargetDeviceChangeNotifyEntry(INT64 a1, INT64 a2, INT64 *a3, _DWORD *a4){
  int SessionIdFromPDO; 
  _EJOB *CurrentServerSilo; 
  _ETHREAD *CurrentThread; 
  int v11; 
  SessionIdFromPDO = -1;
  CurrentServerSilo = PsGetCurrentServerSilo();
  if( *(_DWORD *)(a1 + 20) != (unsigned int)PsGetServerSiloServiceSessionId(CurrentServerSilo) )
    SessionIdFromPDO = IopGetSessionIdFromPDO(*(DEVICE_OBJECT **)(a1 + 88));
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquireResourceExclusiveLite(*(ERESOURCE **)(a1 + 72), 1u);
  if( (SessionIdFromPDO == -1 || *(_DWORD *)(a1 + 20) == SessionIdFromPDO) && !*(_BYTE *)(a1 + 58) )
  {
    *(_QWORD *)(a2 + 24) = *(_QWORD *)(a1 + 80);
    v11 = PnpNotifyDriverCallback(a1, a2, a4);
  }
  else
  {
    *a4 = -1073741637;
    v11 = -1073741808;
  }
  *(_DWORD *)a3 = v11;
  ExReleaseResourceLite(*(PERESOURCE *)(a1 + 72));
  KeLeaveCriticalRegion();
}

Referenced by:

PnpProcessDeferredRegistrations