PopMapInternalActionToIrpAction

POWER_ACTION __stdcall PopMapInternalActionToIrpAction(
        POWER_ACTION Action,
        _SYSTEM_POWER_STATE SystemPowerState,
        UINT8 UnmapWarmEject){
  POWER_ACTION result; 

  result = PowerActionWarmEject;
  if( Action == PowerActionWarmEject )
  {
    if( UnmapWarmEject )
      return 3 - (SystemPowerState != PowerSystemHibernate);
  }
  else
  {
    if( SystemPowerState == PowerSystemHibernate )
      return 3;
    return Action;
  }
  return result;
}

Referenced by:

PoBroadcastSystemState
PopNotifyDevice
PopRequestPowerIrp