USB драйвер фильтр для flash-memory
От: Yarilo  
Дата: 13.08.03 13:12
Оценка:
Написав этот драйвер фильтр сталкнулся со следующей ситуацией.
Драйвер мой правильно расположился в стеке над usbhub.sys и под usbstore.sys,
т.е. все запросы к флешке я ловлю, но вот появилась проблема:
1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)
2) Для того чтобы получить результат после обработки запроса IRP_MJ_INTERNAL_DEVICE_CONTROL я так понимаю мне нужно позвать драйвер синхронно. (??????) Ну я это пытаюсь сделать через событие и IoSetCompletionRoutine, причем вызов выполняется и возвращается STATUS_SUCCESS. Но почему-то все зависает, такое ощещение, что Usbstore.sys ждет STATUS_PENDING. Что делать?
Может кто сталкивался с такой проблемой, напишите?

С уважением Ярослав.
Re: USB драйвер фильтр для flash-memory
От: _cb_  
Дата: 13.08.03 13:25
Оценка:
Здравствуйте, Yarilo, Вы писали:

Y>т.е. все запросы к флешке я ловлю, но вот появилась проблема:

Y>1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)

А spin_lock не подходит?
естественно что при синхронизации spin-ом все данные должны располагаться в non-paged memory.

cb.
Re: USB драйвер фильтр для flash-memory
От: Valerio Россия linkedin.com/in/boronin
Дата: 19.08.03 04:45
Оценка:
Y>1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)
код драйверов очень часто выполняется на IRQL = DISPATCH by NT design

Interlocks, critical sections (KeSynchronizeExecution) вплоть до DIRQL,
spinlocks, мьютексы-семафоры-события и ERESOURCES — вполне можно
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: USB драйвер фильтр для flash-memory
От: Alex Fedotov США  
Дата: 19.08.03 05:45
Оценка:
Здравствуйте, Valerio, Вы писали:

Y>>1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)


V>код драйверов очень часто выполняется на IRQL = DISPATCH by NT design


V>мьютексы-семафоры-события и ERESOURCES — вполне можно


Ась? Ждать с ненулевым таймаутом на DISPATCH_LEVEL нельзя — deadlock будет сразу и безусловно. Кроме того, не помешало бы иметь non-arbitrary thread context, чтобы ждать.
-- Alex Fedotov
Re[3]: USB драйвер фильтр для flash-memory
От: Valerio Россия linkedin.com/in/boronin
Дата: 19.08.03 05:50
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Здравствуйте, Valerio, Вы писали:


Y>>>1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)


V>>код драйверов очень часто выполняется на IRQL = DISPATCH by NT design


V>>мьютексы-семафоры-события и ERESOURCES — вполне можно


AF>Ась? Ждать с ненулевым таймаутом на DISPATCH_LEVEL нельзя — deadlock будет сразу и безусловно. Кроме того, не помешало бы иметь non-arbitrary thread context, чтобы ждать.

ДА, конечно пользоваться нужно как прописано, я ответил на вопрос чем _можно_ пользоваться.
_как_ написано в документации и тут я с Вами полностью согласен — пользоваться надо аккуратно
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re: USB драйвер фильтр для flash-memory
От: Exkurs  
Дата: 27.08.03 16:13
Оценка:
Здравствуйте, Yarilo, Вы писали:

Y>Написав этот драйвер фильтр сталкнулся со следующей ситуацией.

Y>Драйвер мой правильно расположился в стеке над usbhub.sys и под usbstore.sys,
Y>т.е. все запросы к флешке я ловлю, но вот появилась проблема:
Y>1) код драйвера фильтра выполняется на IRQL = DISPATCH, почему? И какие объекты синхронизации можно применять в этом случае? (FastMutex точно нельзя)
Y>2) Для того чтобы получить результат после обработки запроса IRP_MJ_INTERNAL_DEVICE_CONTROL я так понимаю мне нужно позвать драйвер синхронно. (??????) Ну я это пытаюсь сделать через событие и IoSetCompletionRoutine, причем вызов выполняется и возвращается STATUS_SUCCESS. Но почему-то все зависает, такое ощещение, что Usbstore.sys ждет STATUS_PENDING. Что делать?
Y>Может кто сталкивался с такой проблемой, напишите?

Y>С уважением Ярослав.


Можешь прислать пример драйвера — фильтра для USB на exkurs@nm.ru ?
Осмысление бессмысленности имеет определенныей смысл !
Re: USB драйвер фильтр для flash-memory
От: iGNER  
Дата: 24.09.03 10:55
Оценка:
Здравствуйте, Yarilo, Вы писали:

Y>Написав этот драйвер фильтр сталкнулся со следующей ситуацией.

Y>Драйвер мой правильно расположился в стеке над usbhub.sys и под usbstore.sys,
Y>т.е. все запросы к флешке я ловлю, но вот появилась проблема:
Y>...

Можешь прислать пример драйвера — фильтра для USB (который расположился в стеке над usbhub.sys и под AnyUSBDevice.sys и ловит запросы к AnyUSBDevice) на igner@mail.ru ?

С уважением,
иГНЕР
Re[2]: USB драйвер фильтр для flash-memory
От: .h  
Дата: 24.09.03 11:13
Оценка: 2 (1)
Здравствуйте, iGNER, Вы писали:

GNE>Можешь прислать пример драйвера — фильтра для USB (который расположился в стеке над usbhub.sys и под AnyUSBDevice.sys и ловит запросы к AnyUSBDevice) на igner@mail.ru ?


GNE>С уважением,

GNE>иГНЕР

Возможно это пригодится:
http://www.wingmanteam.com/usbsnoopy/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.