Я пытался написать тестовый мост между двумя адаптерами Ethernet, используя пример прототипа NDIS, приведенный в WDK для Win 7. Пока что только что были созданы драйвер и прототип. Теперь мне было интересно, как действовать? Есть ли способ привязать только к паре адаптеров одновременно?
Образец прототипа NDIS и мост Ethernet
comment
@ Джеффри-Типпет Есть идеи?
- person Jimson Kannanthara James   schedule 01.04.2013
Ответы (1)
Протокол NDIS автоматически связывается со всеми поддерживаемыми адаптерами. Таким образом, вам не нужно делать дополнительную работу, чтобы заставить NDISPROT связываться с двумя сетевыми адаптерами Ethernet.
После создания драйвера все, что вам нужно сделать, это:
- Установите драйвер (используйте
INetCfgClassSetup::Install
, как показано в образце bindview; или для случайных экспериментов в графическом интерфейсе свойств сетевой карты есть кнопка Добавить..., позволяющая устанавливать протоколы с помощью графического интерфейса). - Запустите службу драйвера (используйте
StartService
API; для случайных экспериментов подойдетnet start ndisprot
).
Вот и все. NDIS вызовет обработчик ProtocolBindAdpaterEx вашего протокола для каждой сетевой карты Ethernet в системе. В примере этот обратный вызов называется NdisprotBindAdapter
.
Используйте !ndiskd.protocol
, чтобы убедиться, что ваш протокол теперь привязан к нескольким мини-портам.
person
Jeffrey Tippet
schedule
02.04.2013
Спасибо, Джеффри, могу ли я выполнить привязку только к выбранным адаптерам?
- person Jimson Kannanthara James; 03.04.2013
Кроме того, это правильный способ сделать Ethernet-мост или мне следует использовать мини-порт или драйвер фильтра? Знаете ли вы какой-либо пример драйвера моста Ethernet в NDIS6.x?
- person Jimson Kannanthara James; 03.04.2013
Для привязки к выбранным адаптерам: в пользовательском режиме используйте INetCfgBindingPath::Enable(FALSE), чтобы отключить привязки к определенным адаптерам. В режиме ядра: в обработчике ProtocolBindAdapterEx просто выберите не вызывать NdisOpenAdapterEx, если вы не хотите выполнять привязку.
- person Jeffrey Tippet; 04.04.2013
Windows поставляется с мостом Ethernet, так что это лучший пример для сравнения. Он реализован как драйвер MUX-IM, что довольно сложно сделать правильно. Преимущество MUX-IM по сравнению с обычным протоколом заключается в том, что мостовые адаптеры выглядят как 1 унифицированный сетевой интерфейс для ОС. Если это нормально, что мостовые адаптеры появляются независимо от ОС, то вам не нужен MUX-IM, и достаточно протокола.
- person Jeffrey Tippet; 04.04.2013
нет проблем с появлением мостовых адаптеров, появляющихся независимо от ОС, но что меня сейчас смущает, так это то, что после прочтения этой ссылки tech-archive.net/Archive/Development/ Можно ли добиться того же, изменив сквозной доступ? Если да, интересно как?
- person Jimson Kannanthara James; 04.04.2013
Не используйте для этого passthru. Поскольку для этого ответа требуется больше места, я ответил здесь: stackoverflow.com/questions/15792238/
- person Jeffrey Tippet; 05.04.2013