[skip]
O>>Как отменить выгрузку драйвера в UnloadRoutine? Или это делается не в UnloadRoutine? ГМ>-- ГМ>Лучше не "играться" с UnloadRoutine, а сообщать системе, что драйвер не может быть остановлен и/или выгружен.
ГМ>Unload не может быть вызвана без посылки драйверу сообщений IRP_MN_QUERY_STOP_DEVICE и IRP_MN_QUERY_REMOVE_DEVICE. Обрабатывайте их корректно — и Ваш драйвер не будет остановлен или выгружен.
ГМ>Если это не приемлимо и Вы знаете, что именно сейчас останавливать/выгружать драйвер нельзя, сообщите системе, что состояние Вашего драйвера изменилось, вызвав функцию IoInvalidateDeviceState, и далее, обрабатывая PNP_DEVICE_STATE, установите флаг PNP_DEVICE_NOT_DISABLEABLE.
ГМ>Еще один способ добиться этого (если условие не выгрузки драйвера доступно в user's mode) — обрабатывать в driver co-installer сообщения DIF_PROPERTYCHANGE (для остановки драйвера) или DIF_REMOVE (для uninstall драйвера). Преимущество этого варианта — можно сообщить пользователю об этой ситуации.
[skip]
Все очень даже верно для PNP драйверов.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.