Re: запросы на выгруженный дррайвер
От: .Mistery Беларусь  
Дата: 14.07.04 14:59
Оценка:
Здравствуйте, A_G_M, Вы писали:

Так давай по порядку!

A_G>У меня такая проблема. Мой драйвер — это посредник, между одним интерфейсом и драйвером другого устройства. Во время работы с ними мне надо извлечь устройство нижележащего драйвера, когда мой драйвер работает, т е выполняет запросы.


Как я понимаю это фильтр-драйвер который включен в стек драйверов на самом верхнем уровне и ты сам формируешь IRP и передаешь его вниз по стеку.

A_G>А так как нижележащий драйвер плаг энд плэй, то он выгружается после извлечения устройства. А мой драйвер продолжает обращаться к драйверу, которого нет. Как сделать так, чтобы избежать обращения в никуда и остановить мой драйвер после извлечения устройства... или не передавать запросы в нижележ драйвер..у меня обращение к нему организовано через эвент, а не через CompletionRoutine.


Использование CompletionRoutine с одной стороны возможно помогло бы тебе получить нотификацию о отсутствии устройства, хотя это не метод. Ну тоесть я хочу сказать, что в CompletionRoutine тебе бы например пришло что IPR canceled.

Но лучше использовать PnP Notification смотри в DDK там же вроде все описано хорошо. Для поиска используй IoRegisterPlugPlayNotification функцию.

A_G>Можно ли использовать IoMarkIrpPending и как выйти из этой ситуации?


Для того что бы использовать IoMarkIrpPending нужно установить CompletionRoutine потому что ф-я IoMarkIrpPending всего лишь отмечает данный IPR как PENDING тоесть говорит о том что драйверу нужно потом будет провести обработку данных вызвав CompletionRoutine.

Удачи!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.