Драйвер промежуточного фильтра NDIS 5/6 - PullRequest
2 голосов
/ 04 января 2012

Справочная информация: мне нужно создать промежуточный драйвер фильтра NDIS. Этот драйвер будет пропускать весь трафик при сборе метаданных (прежде всего информации о времени). Драйвер экспортирует эту информацию в пользовательское приложение, вставляя свои собственные пакеты, содержащие метаданные, и передавая их в стек.

Мой вопрос касается версий NDIS. В конце концов мне придется написать драйвер для Windows XP и 7. Однако на данный момент я буду реализовывать только один из них в качестве доказательства концепции / прототипа. Я знаю, что в NDIS 6 они разделяют функциональность фильтра из общих промежуточных драйверов на отдельный тип драйвера (облегченный фильтр), чтобы упростить создание драйверов фильтра. Microsoft предоставляет примеры протокольных драйверов фильтров в DDK для NDIS 5 и 6. Я смотрел на эти примеры, а NDIS 6 LWF выглядит только несколько проще (хотя, правда, я все еще новичок в разработке драйверов Windows). 1003 *

При прочих равных, было бы лучше сначала поддержать Win XP (большая установленная база, более легкий доступ к тестовым машинам и т. Д.). Однако, если бы облегченные фильтры NDIS 6 способствовали бы более быстрой / простой разработке, мне лучше было бы сначала реализовать драйвер Win 7.

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

Спасибо за любой вклад.

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Если вы просто хотите изменить примеры драйверов WDK, то, возможно, NDIS 5 IM не слишком много работы.Я не знаком с драйверами NDIS 6 LWF, поэтому не могу комментировать.

Альтернативно используйте пакет пользовательского режима, такой как WinDivert или WinPktFilter , чтобы создать доказательствопрототип.Это может быть проще, чем разработка драйверов. Раскрытие: я создал WinDivert

1 голос
/ 12 января 2012

Да, с точки зрения реализации, драйвер фильтра NDIS 6.0 проще, чем драйвер IM NDIS 5.x, но не намного.

Основными отличиями являются подключаемые интерфейсы и инкапсуляция данных: NDIS_PACKET против NET_BUFFER_LIST. Но нетрудно преобразовать их в дескриптор данных вашей частной сети. Вы можете использовать пример кода WDK (passthru и filter) для подключаемой части, а затем спроектировать свой внутренний общий интерфейс для обработки дескриптора данных частной сети для драйвера IM и LWF.

...