Re: Помогите с TDI в DISPATCH_LEVEL
От: mayko США  
Дата: 20.07.03 06:23
Оценка: 14 (1)
Здравствуйте, Bevz, Вы писали:

B>День Добрый!


B>Кто-нибудь посылал данные через TDI в DISPATCH_LEVEL?

B>Проблема в следующем:
B>Создаю IRP, посылаю TDI_SEND запрос.
B>Он возвращается с флагом PendingReturned в мою IoCompletionRoutine.
B>Следуя указаниям DDK, я должен ему сделать MarkIrpPending и вернуть STATUS_MORE_PROCESSING_REQUIRED.
B>Но мне нужно во-первых освободить MDL, с ним связанный, и, во-вторых, освободить сам IRP.
B>А как я его поймаю?
B>В IoCompletionRoutine он уже больше не возвращается...
--
Как я понимаю, проблема заключается в том, что на уровне DISPATCH_LEVEL нельзя ожидать окончания обработки IRP с ненулевым timeout.

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

С уважением,
Геннадий Майко.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.