динамическая привязка
От: Аноним  
Дата: 13.03.13 12:36
Оценка:
Доброго времени суток.

Занимаюсь разработкой драйвера-фильтра ndis версии 5.1 о коем, собственно говоря, пойдет и речь. Так как это драйвер типа фильтр (а не mux) то ndis.sys привяжет (а точнее встроит) этот фильтр к каждой имеющейся паре протокол-минипорт так, как показано здесь: http://msdn.microsoft.com/en-us/library/windows/hardware/ff556949(v=vs.85).aspx
Гуд. Все хорошо, все работает, под verifier'ом не падает.
Возник вопрос: а как поведет себя драйвер-фильтр при установки еще одной сетевой карточки? Причем в качестве карточки может выступать обычный 3G модем.

И вот чистая ХP развернута в окне VBox'a, ставлю драйвер-фильтр. DbgView дружелюбно сообщает мне "вот мы попали в DriverEntry", "вот PnP event с кодом NetEventReconfigure", "Protocol bind", "Miniport Init" в общем все как всегда: install success. Чищу окно лога DbgView, т.к. если драйвер-фильтр будет прикрепляться к новому сетевому устройству, то очевидно будут вызваться ProtocolBind и MiniportInit, их вызовы логируются, и таким образом я убеждусь... убежусь... убеждуся в общем это будет еще одним доказательством того, что фильтр к приатачился к новому сетевому устройству.

3G модем у меня в телефоне, так что ставлю HTC Synch взятый с официального сайта HTC. Телефон уже подключен к основной машине в режиме "интернет модем". Далее правой кнопкой по USB устройствам на панели устройств запущенной виртуальной машины и выбираю "HTC Android Phone". Виртуалка выдает "найдено HTC Remote NDIS based device". Найдено — установлено. В сетевых адаптерах появилось только что установленное устройство.

Начинаю проверять работу фильтра, и тут выясняется что он НЕ прикрепился к новому устройству. Про работу фильтра рассказать не могу — коммерческая тайна как никак. Заглядываю в DbgView — пусто. Печалька. Открываю свойства подключения 3G модема, среди компонентов обнаруживаю свой "ndis network filter". Галочка стоит — значит должен использоваться. Нажимаю "Ok". И чудо: в DbgView побежали строчки. "PnP Reconfigure" -> "ProtocolBind" -> "MiniportInit". Проверяю работу еще раз — теперь фильтр работает и в стеке, в низу которого находится минипорт 3G модема.

И собственно вопрос, приведший меня сюда: можно ли сделать так, что бы фильтр сразу прикреплялся к новому устройству без лишних телодвижений в свойства сетевого подключения?

P.S. Кстати, если сделать все действия описанные выше, но зайти в свойства подключения сетевой карточки, а не модема, и нажать "Оk", то фильтр так же прикрепиться к устройству на котором его еще нет, то бишь к модему.
ndis filter binding
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.