NDIS прото образец и Ethernet мост

Опитвах се да напиша тестов мост между два Ethernet адаптера, като използвах примера за прото на NDIS, даден в WDK за Win 7. Засега току-що имах изграден драйвер и прототест. Сега се чудех как да процедирам? Има ли някакъв начин да се свържете само с няколко адаптера наведнъж?


person Jimson Kannanthara James    schedule 31.03.2013    source източник
comment
@Jeffrey-Tippet Някаква идея?   -  person Jimson Kannanthara James    schedule 01.04.2013


Отговори (1)


NDIS протокол автоматично се свързва с всички поддържани адаптери. Така че не е нужно да правите допълнителна работа, за да накарате NDISPROT да се обвърже през две Ethernet NIC.

След като създадете драйвера, всичко, което трябва да направите е:

  1. Инсталирайте драйвера (използвайте INetCfgClassSetup::Install, както е илюстрирано в примера за bindview; или за небрежно експериментиране GUI със свойствата на NIC има бутон Добавяне..., който ви позволява да инсталирате протоколи с GUI).
  2. Стартирайте услугата на драйвера (използвайте StartService API; или за случайни експерименти, net start ndisprot ще свърши работа).

Това е. NDIS ще извика манипулатора ProtocolBindAdpaterEx на вашия протокол за всеки Ethernet NIC в системата. Това обратно извикване е наречено NdisprotBindAdapter в примера.

Използвайте !ndiskd.protocol, за да проверите дали вашият протокол вече е обвързан с множество минипортове.

person Jeffrey Tippet    schedule 02.04.2013
comment
Благодаря, Джефри, мога ли да се свържа само с избрани адаптери? - person Jimson Kannanthara James; 03.04.2013
comment
също така, това ли е правилният начин да направя Ethernet мост или трябва да използвам минипорт или филтърен драйвер? Знаете ли за примерен драйвер за Ethernet мост в NDIS6.x? - person Jimson Kannanthara James; 03.04.2013
comment
За да се свържете с избрани адаптери: в потребителски режим използвайте INetCfgBindingPath::Enable(FALSE), за да деактивирате свързванията към определени адаптери. В kernelmode: във вашия манипулатор на ProtocolBindAdapterEx просто изберете да не извиквате NdisOpenAdapterEx, ако не искате да се свързвате. - person Jeffrey Tippet; 04.04.2013
comment
Windows се доставя с Ethernet мост, така че това е най-добрият пример за сравнение. Той е реализиран като MUX-IM драйвер, който е доста сложен за правилна работа. Предимството на MUX-IM спрямо обикновения протокол е, че мостовите адаптери се появяват като 1 унифициран мрежов интерфейс към операционната система. Ако е добре мостовите адаптери да се показват независимо в операционната система, тогава не се нуждаете от MUX-IM и е достатъчен протокол. - person Jeffrey Tippet; 04.04.2013
comment
няма проблем при показването на мостовите адаптери, които се появяват независимо от операционната система, но това, което сега съм объркан, е след като прочетох тази връзка tech-archive.net/Archive/Development/ Възможно ли е да се постигне същото чрез модифициране на passthru? Ако да, чудите се как? - person Jimson Kannanthara James; 04.04.2013
comment
Не използвайте passthru за това. Тъй като този отговор изисква повече място, отговорих тук: stackoverflow.com/questions/15792238/ - person Jeffrey Tippet; 05.04.2013