Re[2]: Отмена UnloadRoutine
От: Злость Россия  
Дата: 08.09.06 07:02
Оценка: +1
Здравствуйте, Геннадий Майко, Вы писали:

[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 драйверов.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.