Вам не нужно реализовывать свой собственный стек TCP / IP!
Во-первых, вы уверены, что это нужно сделать в драйвере?Весь ваш сложный код и бизнес-логика обычно должны быть в приложении или сервисе пользовательского режима.Драйверы, как правило, должны быть очень простыми обертками вокруг оборудования.Это правило не просто какой-то абстрактный принцип - гораздо проще писать код пользовательского режима, где вы можете использовать знакомый отладчик и гораздо более широкий набор Win32 API.Вы решите свою проблему быстрее, если сможете переместить большую часть своего кода в режим пользователя.
Если вам действительно необходимо выполнить ввод / вывод TCP-сокета в режиме ядра, то вам следует использовать Winsock Kernel (WSK).WSK позволяет открывать сокет, похожий на Winsock в режиме пользователя.(Хотя пользовательский режим Winsock API имеет больше опций и возможностей; WSK - это просто).
WSK доступен в Windows Vista и более поздних версиях.Если вы должны поддерживать Windows XP, то вам нужно использовать TDI.TDI намного сложнее понять;Я не рекомендую использовать его, если вы можете избежать этого.