Здравствуйте, straightener,
O>>>>Как отменить выгрузку драйвера в UnloadRoutine? Или это делается не в UnloadRoutine?
ГМ>>>Unload не может быть вызвана без посылки драйверу сообщений IRP_MN_QUERY_STOP_DEVICE и IRP_MN_QUERY_REMOVE_DEVICE. Обрабатывайте их корректно — и Ваш драйвер не будет остановлен или выгружен.
З>>[skip]
З>>Все очень даже верно для PNP драйверов.
S>Не очень. IRP_MN_QUERY_STOP_DEVICE не обязан предшествовать IRP_MN_QUERY_REMOVE_DEVICE, мало того, девайс останавливается только для ребаланса ресурсов, а выключается он сразу, без перехода через состояние "stopped". Следует исключить IRP_MN_QUERY_STOP_DEVICE из вышепреведенного утверждения...
--
Строго говоря, рассматривая только выгрузку драйвера, Вы, скорее всего, правы — для некоторых OS (но не для всех!) возможна ситуация, когда IRP_MN_QUERY_STOP_DEVICE не обязан предшествовать IRP_MN_QUERY_REMOVE_DEVICE.
(Но тогда Вам стоило указать так же и на DIF_PROPERTYCHANGE...)

.
Я хотел подчеркнуть, что если драйвер по каким-то причинам нельзя выгружать, то и останавливать его так же, наверное, не стоит.
C уважением,
Геннадий Майко.