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

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

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 27-08-2004 09:18 » 

Простите если очень уж тупой вопрос.  :oops:

предположим что есть некий драйвер фильтр сериального порта. Интересует в каком порядке проходят данные. Т.е. при попытке послать что то на принтер какой путь проходят данные ? Сначала попадают в фильтр, а уже потом передаются драйверу ? Если да, то как происходит запрос в системе ? Ведь как я понимаю приложение обращается к драйверу порта, а не к фильтру(т.е. открывает CreateFile() сам драйвер порта а не драйвер фильтр) ?

Простите если плохо объяснил, сам уже запутался.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 27-08-2004 09:42 » 

Не буду утверждать, но по-моему если приложение обращается впрямую к драйверу порта, то оно минует фильтр. Если же запрос идет через ОС без создания устройства, то ОС пошлет IRP драйверу находящемуся на верхушке стека, то есть фильтру, а фильтр должен послать пакет нижележащему драйверу и так до конца.
В твоем случае, то есть если посылать на принтер, то попадет сначала фильтру.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 27-08-2004 10:53 » 

Значит так - запрос всегда пройдет через все фильтры,если он послан из ф-ции операционной системы- они всегда вызывают IoCallDriver на самый верхний девайс в цепочке( есть исключения, например 6 специальных FastCall ф-ций в файловой системе никогда не пройдут через фильтр) но в 99% запрос пойдет через всю цепочку, всегда через всю цепочку идут запросы на открытие и чтение/запись. Обойти фильтр можно только вызвав( IoCallDriver ) напрямую драйвер, лежащий ниже его.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 27-08-2004 11:15 » 

Scorp__), SlavaI, спасибо, уже понятней.
То есть теоритически, если проходит сообщение через фильтр, значит его можно отловить, обработать, и послать нижестоящему в стёке драйверу ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #4 : 27-08-2004 11:58 » 

Цитата

То есть теоритически, если проходит сообщение через фильтр, значит его можно отловить, обработать, и послать нижестоящему в стёке драйверу


Да, а можно и не посылать.
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 27-08-2004 12:29 » 

SlavaI, а просто интересно выяснить. Если вызвать DeviceIoControl к устройству нижележащего драйвера, фильтр ничего не узнает?
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #6 : 27-08-2004 12:35 » 

Цитата

Если вызвать DeviceIoControl к устройству нижележащего драйвера, фильтр ничего не узнает


Нет, не узнает, через него Irp не пройдет.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines