Здравствуйте, Exkurs, Вы писали:
ГМ>>Если "нижний" device поддерживает vendor-supplied интерфейс к себе (см. IRP_MN_QUERY_INTERFACE), то можно попытаться использовать его напрямую, в обход I/O manager'a.
E>Для получения этого интерфейса от "нижнего" драйвера, нужно будет вызвать IoCallDriver с запросом к нижнему драйверу, поддерживает он этот интерфейс или нет ?
--
Нужно просто послать IRP_MN_QUERY_INTERFACE с QueryInterface.InterfaceType = _interface_GUID_ "нижнему" device'у.
Список типов интерфейса есть в wdmguid.h или должен быть опубликован автором "нижнего" драйвера.
Пример использования такого метода есть в Knowledge Base
Q253232.
C уважением,
Геннадий Майко.
V>>а отчего так IO Manager то Вас смущает, он тут причем?
E>Дак вот прочитал Lozano, пишет, что вот эти tightly couplde drivers, работающие без I/O manager' a, работают быстрее там мала вероятность оказывания фильтра в стеке, где — нибудь далеко от фильтруемого драйвера.
это да, но что скажут от такого Вашего поведения другие фильтры в стеке
иногда это действительно необходимо их не беспокоить, но чаще это означает несовместимость с чужим софтом и не факт что выбирая между тем софтом и Вашим, сделают выбор в Вашу пользу — лучше чтобы все жили дружно
насчет скорости — не думаю что это даст большой выигрыш в современном мире (отправка пакетов в обход), но драйвера бывают разные, Вам тут виднее.
... << RSDN@Home 1.1 beta 2 >>