The ddi_removing_power() function indicates whether a currently pending call into a driver's detach(9E) entry point with a command of DDI_SUSPEND is likely to result in power being removed from the device.
ddi_removing_power() can return true and power still not be removed from the device due to a failure to suspend and power off the system.
Example 1. Protecting a Tape from Abrupt Power Removal
A tape driver that has hardware that would damage the tape if power is removed might include this code in its detach(9E) code:
int
xxdetach(dev_info_t *dip, ddi_detach_cmd_t cmd)
{
...
case DDI_SUSPEND:
/*
* We do not allow DDI_SUSPEND if power will be removed and
* we have a device that damages tape when power is removed
* We do support DDI_SUSPEND for Device Reconfiguration, however.
*/
if (ddi_removing_power(dip) && xxdamages_tape(dip))
return (DDI_FAILURE);
...