PnpCancelStopDeviceNode

void __fastcall PnpCancelStopDeviceNode(ULONG_PTR BugCheckParameter2){
  DEVICE_OBJECT *v2; 
  UINT64 v3; 
  if( *(_DWORD *)(BugCheckParameter2 + 300) == 777 )
  {
    if( (*(_DWORD *)(BugCheckParameter2 + 704) & 0x20) == 0 )
      KeBugCheckEx(0xCAu, 0xDui64, BugCheckParameter2, 0x20ui64, 0i64);
    PoFxIdleDevice(*(DEVICE_OBJECT **)(BugCheckParameter2 + 32));
    v2 = *(DEVICE_OBJECT **)(BugCheckParameter2 + 32);
    *(_DWORD *)(BugCheckParameter2 + 704) &= ~0x20u;
    IopQueryReconfiguration(6u, v2);
    PipRestoreDevNodeState(BugCheckParameter2, v3);
    if( (*(_DWORD *)(BugCheckParameter2 + 396) & 0x1000000) != 0 )
    {
      PnpUnlockMountableDevice(*(DEVICE_OBJECT **)(BugCheckParameter2 + 32));
      PipClearDevNodeFlags((_DEVICE_NODE *)BugCheckParameter2, 0x1000000ui64);
    }
  }
}

Referenced by:

PnpCancelStopDeviceSubtree
PnpQueryRebalanceWorker