Остановка устройства для его отключения (Windows 98/Me)
В Windows 98/Me диспетчер PnP останавливает irPs, когда диспетчер устройств отключает устройство. (В Windows 2000 и более поздних версиях Windows проблема удаляет irp в этой ситуации.
Диспетчер PnP отправляет stop IRP в следующей последовательности:
Диспетчер PnP выдает IRP_MN_QUERY_STOP_DEVICE , чтобы спросить, могут ли драйверы устройства остановить устройство.
Если все драйверы в стеке устройств возвращают STATUS_SUCCESS, драйверы переводят устройство в состояние (ожидание остановки), из которого устройство можно быстро остановить.
Диспетчер PnP запрашивает столько стеков устройств, сколько необходимо для отключения устройства.
Если IRP_MN_QUERY_STOP_DEVICE выполнено успешно, диспетчер PnP выдает IRP_MN_STOP_DEVICE для остановки устройства.
Диспетчер PnP отправляет IRP остановки только в том случае, если предыдущий IRP-stop запроса для устройства успешно завершен. В ответ на остановку IRP драйверы освобождают аппаратные ресурсы устройства (например, его порты ввода-вывода) и завершаются сбоем всех irP, которым требуется доступ к устройству.
Если IRP_MN_QUERY_STOP_DEVICE завершается сбоем, диспетчер PnP отправляет IRP_MN_CANCEL_STOP_DEVICE для отмены запроса.
В ответ на IRP_MN_CANCEL_STOP_DEVICE драйверы устройства возвращают устройство в запущенное состояние и возобновляют обработку запросов ввода-вывода для устройства.
Диспетчер PnP отменяет остановку запроса для стека устройств, если один драйвер в стеке не выполнил запрос. Когда диспетчер PnP отменяет остановку запроса только на одном стеке устройств, он отправляет запрос IRP_MN_CANCEL_STOP_DEVICE , так как все драйверы, подключенные над драйвером, который не выполнил запрос, имеют устройство в состоянии ожидания остановки. После успешного выполнения IRP_MN_CANCEL_STOP_DEVICE драйверы возвращают устройство в запущенное состояние.
При отключении устройства его драйверы не могут ставить в очередь входящие irp, так как нет никакой гарантии, когда устройство может быть повторно включено. Следовательно, данные могут быть потеряны.