PiDrvDbUnloadNodeWaitWorkerCallback

VOID __stdcall PiDrvDbUnloadNodeWaitWorkerCallback(VOID *Parameter){
  NTSTATUS v2; 
  _ETHREAD *CurrentThread; 
  int v4; 
  INT64 v5; 

  v2 = ZwWaitForSingleObject(*((_QWORD *)Parameter + 59), 0, 0i64);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v4 = v2;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceExclusiveLite((UINT64)Parameter + 88, 1, v5);
  if( !*((_BYTE *)Parameter + 489) )
  {
    *((_BYTE *)Parameter + 489) = 1;
    PnpDiagnosticTraceObjectWithStatus(&KMPnPEvt_DriverDatabaseUnload_Stop, (unsigned __int16 *)Parameter + 8, v4);
    PnpDiagnosticTraceObjectWithStatus(&KMPnPEvt_DriverDatabaseLoaded_Stop, (unsigned __int16 *)Parameter + 8, v4);
  }
  ExReleaseResourceLite((PERESOURCE)((char *)Parameter + 88));
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

No references.