Поздравляем с переносом WinPcap на NDIS 6.x. Я впечатлен. Надеюсь, вы сможете убедить апстрим принять ваши изменения :-)
Что касается LWF
LWF по-прежнему поддерживаются Microsoft. Мы мало о них говорим просто потому, что интерес к ним ограничен. Большинство людей действительно хотят работать на уровне 3 или уровне 4, где их лучше обслуживает WFP, чем LWF. Однако инструментарий низкоуровневого захвата пакетов является прекрасным примером того, для чего хороши LWF.
Мы рады видеть, что люди пишут новые LWF, вызовы WFP, минипорты NDIS или протоколы NDIS. Это все поддерживаемые и современные технологии. (Предполагая NDIS 6.x для минипорта и протокола).
Сравнение LWF, протоколов NDIS и вызовов WFP
LWF может делать почти все, что может делать драйвер протокола NDIS. Есть несколько небольших угловых случаев, но в целом вы обнаружите, что LWF являются мощными.
Вызовы WFP работают на другом уровне и поэтому имеют несколько иные сильные и слабые стороны, чем протокол NDIS или LWF. Например, вызов WFP не может взаимодействовать с состоянием подключения к мультимедиа, разгрузкой оборудования или управлением питанием. Но, в отличие от LWF NDIS, вызов WFP может просматривать открытый текст пакета, защищенного с помощью IPsec, запрашивать личность пользователя/приложения, которое первоначально отправило пакет, перехватывать петлевой IP-трафик и авторизовывать создание самого сокета (до любого трафик отправляется).
Вы должны сесть и спросить себя: "Какой уровень сетевого стека меня действительно интересует?" Если ответом является уровень 2, используйте драйвер NDIS. Если это уровень 3 или уровень 4 стека IPv4/6, вам понадобится выноска WFP. (Некоторые люди начинают с драйвера NDIS, потому что они лучше всего знакомы с NDIS, но затем сталкиваются с трудностями, потому что на самом деле пытаются решить проблему на уровне TCP.)
Использование WDF с NDIS или WFP
WDF в значительной степени ортогонален NDIS или WFP. Вы можете использовать либо WDF, либо WDM, либо их сочетание в драйвере NDIS или вызове WFP. Microsoft, команда NDIS и я официально рекомендуем вам как можно чаще использовать WDF, поскольку это сэкономит ваше время и повысит качество вашего драйвера.
Как правило, если ваш протокол LWF или NDIS является просто базовым драйвером «hello world», WDF будет работать нормально, но не будет очень полезным. WDF мало помогает в той части вашего драйвера, которая взаимодействует с NDIS. Но как только вы добавите IOCTL в пользовательский режим (или любой другой трюк, не относящийся к NDIS), WDF может сэкономить вам много времени и ошибок.
Сложность вызовов LWF и WFP
Я думаю, вы обнаружите, что NDIS LWF и вызовы WFP являются одними из самых простых для написания сетевых драйверов. LWF проще, чем драйвер протокола NDIS, и намного проще, чем драйвер NDIS IM. Полный драйвер LWF без каких-либо действий состоит всего из 20 строк кода. Выноски WFP писать не сложнее, чем LWF.
person
Jeffrey Tippet
schedule
06.08.2013