IopWarmEjectDevice

NTSTATUS __stdcall IopWarmEjectDevice(_DEVICE_OBJECT *DeviceToEject, _SYSTEM_POWER_STATE LightestSleepState){
  DEVICE_OBJECT *v4; 
  int v5; 
  PNP_VETO_TYPE v6; 
  KeWaitForSingleObject(&IopWarmEjectLock, Executive, 0, 0, 0i64);
  PpDevNodeLockTree(1);
  IopWarmEjectPdo = (__int64)DeviceToEject;
  PpDevNodeUnlockTree(1);
  v5 = NtInitiatePowerAction(PowerActionWarmEject, LightestSleepState, 3ui64, 0);
  if( v5 == -1073741727 )
    PnpSetPowerVetoEvent(PowerActionWarmEject, v4, v6, (UNICODE_STRING *)DeviceToEject);
  PpDevNodeLockTree(1);
  if( IopWarmEjectPdo )
  {
    if( v5 >= 0 )
      v5 = -1073741823;
    IopWarmEjectPdo = 0i64;
  }
  PpDevNodeUnlockTree(1);
  KeSetEvent(&IopWarmEjectLock, 0);
  return v5;
}

Referenced by:

PnpProcessCompletedEject