Драйвер NDIS 5/6 со стеком tcp / ip, есть ли код? - PullRequest
0 голосов
/ 13 октября 2011

Я пытаюсь написать драйвер ядра Windows, который требует связи по протоколу tcp / ip с использованием NDIS 5/6. Поскольку он будет использовать NDIS, насколько я понимаю, ему нужна собственная реализация стека tcp / ip.

Может ли кто-нибудь указать мне направление реализации этого или что-то близкое к нему?

Любая помощь будет принята с благодарностью!

С уважением

1 Ответ

2 голосов
/ 14 октября 2011

Вам не нужно реализовывать свой собственный стек TCP / IP!

Во-первых, вы уверены, что это нужно сделать в драйвере?Весь ваш сложный код и бизнес-логика обычно должны быть в приложении или сервисе пользовательского режима.Драйверы, как правило, должны быть очень простыми обертками вокруг оборудования.Это правило не просто какой-то абстрактный принцип - гораздо проще писать код пользовательского режима, где вы можете использовать знакомый отладчик и гораздо более широкий набор Win32 API.Вы решите свою проблему быстрее, если сможете переместить большую часть своего кода в режим пользователя.

Если вам действительно необходимо выполнить ввод / вывод TCP-сокета в режиме ядра, то вам следует использовать Winsock Kernel (WSK).WSK позволяет открывать сокет, похожий на Winsock в режиме пользователя.(Хотя пользовательский режим Winsock API имеет больше опций и возможностей; WSK - это просто).

WSK доступен в Windows Vista и более поздних версиях.Если вы должны поддерживать Windows XP, то вам нужно использовать TDI.TDI намного сложнее понять;Я не рекомендую использовать его, если вы можете избежать этого.

...