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