Драйвер пользовательского режима с NDIS

Платформа фильтрации Windows предоставляет API для разработки драйвера сетевого фильтра режима ядра и пользовательского режима.
Можно ли разработать драйвер сетевого фильтра пользовательского режима на NDIS с помощью Windows API?


person Avinash Kumar Ranjan    schedule 05.06.2020    source источник


Ответы (1)


No.

В Windows нет инфраструктуры для фильтрации на уровне NDIS из процесса пользовательского режима. Вы можете создать его самостоятельно: написать фильтр NDIS, который перенаправляет операции ввода-вывода в пользовательский режим, изящно справляться с тайм-аутами и сбоями, делая его одновременно безопасным и быстрым. Я уверен, вы понимаете, что это нетривиальная задача, и почти наверняка проще просто собрать решение целиком в монолитном драйвере ядра.

Это разумный запрос функции! Команда NDIS хочет иметь модель фильтрации пользовательского режима. Однако в нашей ближайшей дорожной карте есть драйвер сетевой карты пользовательского режима (NetAdapter). После этого мы сможем заняться фильтрацией пользовательского режима. К сожалению, это будет через годы, поэтому вы, вероятно, не можете просто ждать, пока мы доберемся до этого.

person Jeffrey Tippet    schedule 05.06.2020
comment
Но NetAdapter использует модель WDF. Не приведет ли переход к нему в долгосрочной перспективе к устареванию NDIS? - person SomeWittyUsername; 05.06.2020
comment
Да или нет, в зависимости от вашего определения NDIS. Драйвер с именем NDIS.SYS, вероятно, всегда будет находиться за кулисами, скрепляя все вместе. Но драйверы NIC (и, в конечном итоге, драйверы фильтров и протоколов), вероятно, будут напрямую использовать меньше API с именем NdisXyz. Очень похоже на то, как WDF не делает ядро ​​или WDM устаревшими. Мы уже постепенно призываем людей использовать меньшее количество API-интерфейсов NDIS (например, NdisCopyMemory -> RtlCopyMemory), что можно сформулировать как мягкое прекращение поддержки небольших частей NDIS. - person Jeffrey Tippet; 06.06.2020