Я пытался написать тестовый мост между двумя сетевыми адаптерами, используя пример прототипа NDIS, данный в WDK для Win 7. До сих пор только что был создан драйвер и прототип. Теперь мне было интересно, как просить? Есть ли способ связать только пару адаптеров за один раз?Прообраз образца NDIS и мост ethernet
ответ
Протокол NDIS автоматически привязывается к всем поддерживающим адаптерам. Таким образом, вам не нужно делать дополнительную работу, чтобы NDISPROT связывался с двумя сетевыми сетевыми адаптерами Ethernet.
После того, как вы создали драйвер, все, что вам нужно сделать, это:
- Установите драйвер (используйте
INetCfgClassSetup::Install
, как показано в образце BindView, или для случайного эксперимента, то свойства GUI NIC имеет Добавить ..., которая позволяет устанавливать протоколы с графическим интерфейсом). - Запустите службу водителя (используйте
StartService
API, или для случайных экспериментов,net start ndisprot
будет делать).
Всё. NDIS будет вызывать обработчик протокола ProtocolBindAdpaterEx вашего протокола для каждого сетевого сетевого адаптера в системе. Этот обратный вызов имеет имя NdisprotBindAdapter
в образце.
Используйте !ndiskd.protocol
, чтобы убедиться, что ваш протокол теперь связан с несколькими мини-портами.
Спасибо Джеффри, могу я привязать только к выбранным адаптерам? –
также, это правильный способ сделать мост ethernet или использовать минипорт или фильтр? Вы знаете какой-либо пример драйвера Ethernet-моста в NDIS6.x? –
Для привязки к выбранным адаптерам: в usermode используйте INetCfgBindingPath :: Enable (FALSE), чтобы отключить привязки к определенным адаптерам. В kernelmode: в обработчике ProtocolBindAdapterEx просто выберите, чтобы не вызывать NdisOpenAdapterEx, если вы не хотите связывать. –
@ Jeffrey-Tippet Любая идея? –