我正在尝试编写一个windows内核驱动程序,它需要使用NDIS 5/6进行tcp/ip通信。因为它将使用NDIS,据我所知,它需要自己的tcp/ip堆栈实现。
有没有人能告诉我这个的实现方向,或者类似的东西?
任何帮助都将不胜感激!
亲切的问候
发布于 2011-10-14 20:51:13
你不需要实现你自己的TCP/IP协议栈!
首先,您确定需要在驱动程序中执行此操作吗?所有复杂的代码和业务逻辑通常都应该在用户模式应用程序或服务中。大多数情况下,驱动程序是非常简单的硬件包装。这个规则也不仅仅是一些抽象的原则--编写用户模式代码要容易得多,您可以在其中使用熟悉的调试器和更广泛的Win32 API集。如果你能把大部分代码移到用户模式,你就能更快地解决你的问题。
如果您确实必须在内核模式下执行TCP socket I/O,那么您应该使用Winsock Kernel (WSK)。WSK允许你打开一个套接字,类似于用户模式下的Winsock。(尽管usermode Winsock API有更多的选项和特性,但WSK是最基本的)。
WSK在Windows Vista及更高版本上可用。如果您必须支持Windows XP,则需要使用TDI。TDI更难正确处理;如果可以避免的话,我不推荐使用它。
https://stackoverflow.com/questions/7747371
复制相似问题