Bus drivers typically handle this request for their child devices (child PDOs) that support device ejection. Function and filter drivers do not receive this request.
IRP_MJ_PNP When Sent
The PnP manager sends this IRP to direct the appropriate driver or drivers to eject the device from its slot.
The PnP manager sends this IRP at IRQL PASSIVE_LEVEL in an arbitrary thread context.
I/O Status Block
A bus driver sets Irp->IoStatus.Status to STATUS_SUCCESS or to an appropriate error status.
On success, a bus driver sets Irp->IoStatus.Information to zero.
If a bus driver does not handle this IRP, it leaves Irp->IoStatus.Status as is and completes the IRP.
For the device to be ejected, the device must be in the D3 device power state (off) and must be unlocked (if the device supports locking).
Any driver that returns success for this IRP must wait until the device has been ejected before completing the IRP.
Sending This IRP
Reserved for system use. Drivers must not send this IRP.
Instead, see the reference page for the IoRequestDeviceEject routine.
|Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h)|