IopWarmEjectDevice
VOID __fastcall IopWarmEjectDevice(_DEVICE_OBJECT *DeviceToEject, _SYSTEM_POWER_STATE LightestSleepState){
__int64 v4;
NTSTATUS v5;
__int64 v6;
KeWaitForSingleObject((UINT64)&PnpReplaceEvent + 6624, 0, 0, 0, 0i64);
PpDevNodeLockTree(PPL_TREEOP_ALLOW_READS);
*(&PnpReplaceEvent + 824) = DeviceToEject;
PpDevNodeUnlockTree(PPL_TREEOP_ALLOW_READS);
v5 = NtInitiatePowerAction(PowerActionWarmEject, LightestSleepState, 3ui64, 0);
if( v5 == -1073741727 )
PnpSetPowerVetoEvent(7, v4, v6, DeviceToEject, 12, 0i64);
PpDevNodeLockTree(PPL_TREEOP_ALLOW_READS);
if( *(&PnpReplaceEvent + 824) )
*(&PnpReplaceEvent + 824) = 0i64;
PpDevNodeUnlockTree(PPL_TREEOP_ALLOW_READS);
KeSetEvent((PRKEVENT)((char *)&PnpReplaceEvent + 6624), 0, 0);
}Referenced by:
PnpProcessCompletedEject