PnprQuiesceWorker

VOID __stdcall PnprQuiesceWorker(PVOID Parameter){
  DEVICE_OBJECT *v2; 
  DEVICE_OBJECT *v3; 
  int v4; 
  int v5; 
  struct _KEVENT *v6; 
  int v7; 
  VOID *v8[2]; 
  INT64 v9[2]; 
  __int128 v10; 
  __int128 v11; 
  __int64 v12; 
  int v13; 
  *(_OWORD *)v9 = 0i64;
  v10 = 0i64;
  v11 = 0i64;
  v12 = 0i64;
  v13 = 0;
  v8[0] = (VOID *)(PnprContext + 20760);
  v8[1] = (VOID *)(PnprContext + 20808);
  KeWaitForMultipleObjects((_BYTE *)2, v8, WaitAny, Executive, 0, 0, 0i64, 0i64);
  if( v4 != 1 )
  {
    PnprLockPagesForReplace(v3, v2);
    v5 = PnprQuiesceDevices((INT64)v9);
    v6 = (struct _KEVENT *)PnprContext;
    v7 = v5;
    *(_DWORD *)(PnprContext + 20856) = v5;
    KeSetEvent(v6 + 866, 0);
    if( v7 >= 0 )
    {
      KeWaitForSingleObject((PVOID)(PnprContext + 20808), Executive, 0, 0, 0i64);
      PnprWakeDevices((__int64)v9);
    }
    PnprCompleteWake();
  }
  KeSetEvent((PRKEVENT)(PnprContext + 20832), 0);
  ExFreePoolWithTag(Parameter, 0x51706E50u);
}

Referenced by:

No references.