Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: При выгрузке драйвера ошибка 0x000000CE (+).  (Прочитано 6983 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Аноним
Гость
« : 09-09-2004 08:16 » 

При выгрузке драйвера фильтра появляется ошибка 0x000000CE. Как лучше отменить отложенные IRPs в данном случае ?
Записан
mad
Гость
« Ответ #1 : 09-09-2004 13:17 » 

тебе их не надо отменять тебе их нужно завершить их отменяет система в случае выгрузки образа (отмена это просто значит вызов процедуры отмены), при условии, что ты прописал сансел процедуру. В ней, собственно и делают завершение ждуших запросов.

хм....в случае с фильтром сомневаюсь что нужно это вобще трогать. Ты же не генеришь сам irp?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 10-09-2004 06:40 » 

Цитата

Как лучше отменить отложенные IRPs в данном случае ?


Надо просто дождаться их завершения и не генерить новых.
Записан
Anonymous
Гость
« Ответ #3 : 11-09-2004 08:46 » 

У меня просто пропускаются IRPs вниз асинхронно (без уведомления нижележащим драйвером фильтра о "судьбе" IRP) .

При выгрузке фильтра (он не PnP, выгружается средствами SCM) получается такая ошибка.



Цитата

Надо просто дождаться их завершения и не генерить новых.


SlavaI, каким образом ? Фильтр не PnP и как в этом случае, например, использовать Io...RemoLock функции для блокировки выгрузки фильтра, пока IRPs завершатся.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #4 : 13-09-2004 10:09 » 

Цитата

SlavaI, каким образом ?


Например счетчиком, декрементить в Completion Routine.
Записан
Anonymous
Гость
« Ответ #5 : 13-09-2004 20:39 » 

Цитата

Например счетчиком, декрементить в Completion Routine


Именно в Completion Routine ?


Есть диспетчерская процедура фильтра:

DispatchAny

Inc counter


IoSkipCurrentIrpStackLocation pIrp  



IoCallDriver

Dec counter

Есть процедура выгрузки драйвера: DriverUnload

Она вызывается в момент «работы» диспетчерской процедуры, когда выполняется какая – то команда (например IoSkipCurrentIrpStackLocation pIrp  )

Если counter = 0 тогда там iodeletedevice и так далее
Иначе возврат к команде следующей за той, «на которой» была вызвана DriverUnload

Или чтобы после вызова DriverUnload выполнялась диспетчерская процедура пока counter не стала равна 0, только потом iodeletedevice, то есть, чтобы было такое ожидание наступления обнуления переменной counter.

Как это сделать ?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines