All PnP drivers must handle this IRP.
The PnP manager sends this IRP to stop a device so it can reconfigure the device's hardware resources.
On Windows 2000 and later systems, the PnP manager sends this IRP only if a prior IRP_MN_QUERY_STOP_DEVICE completed successfully.
On Windows 98/Me, the PnP manager also sends this IRP when a device is being disabled and when a device stack has failed an IRP_MN_START_DEVICE request. In cases of failed start, the PnP manager sends this IRP without a preceding IRP_MN_QUERY_STOP_DEVICE request.
The PnP manager sends this IRP at IRQL PASSIVE_LEVEL in the context of a system thread.
I/O Status Block
A driver must set Irp->IoStatus.Status to STATUS_SUCCESS.
This IRP is handled first by the driver at the top of the device stack and then passed down to each lower driver in the stack.
In response to this IRP, Windows 2000 and later drivers stop the device and release any hardware resources being used by the device, such as I/O ports and interrupts.
On Windows 2000 and later, a stop IRP is used solely to free a device's hardware resources so they can be reconfigured. Once the resources are reconfigured, the device is restarted. A stop IRP is not a precursor to a remove IRP. See Plug and Play for more information about the order in which PnP IRPs are sent to devices.
On Windows 98/Me, a stop IRP is also used after a failed start and when a device is being disabled. WDM drivers that run on these operating systems should stop the device, fail any incoming I/O, and disable and deregister any user-mode interfaces.
A driver must not fail this IRP. If a driver cannot release the device's hardware resources, it must fail the preceding query-stop IRP.
See Stopping a Device for detailed information about handling stop IRPs.
Sending This IRP
Reserved for system use. Drivers must not send this IRP.