这个问题非常明显,我需要能够在windows xp中从内核模式驱动程序打开和控制套接字。我知道vista和after提供了一个类似于内核模式的winsock,但对于XP来说却没有这样的东西。
干杯
修改 我建议让用户模式服务执行套接字工作,并建议使用TDI。哪个最好?
答案 0 :(得分:1)
使用TDI界面,可在XP和Vista上使用。
答案 1 :(得分:1)
TDI不是一个易于使用的界面。它旨在从应用程序中抽象出网络传输驱动程序(TCP,NetBEUI,AppleTalk等)。您必须完全理解API才能将其用于套接字工作 - 这肯定比编写用户模式服务并与之通信要多得多。您可以从服务向驱动程序发出反向IRP,因此驱动程序可以在需要时触发通信。
此外,您从驱动程序中删除的复杂性越高(此处为用户模式)越好。
但是,使用用户模式服务将需要每个数据传输到驱动程序的上下文切换,这可能是基于每个数据包。这是最好避免的开销。
我很好奇为什么驱动程序需要执行网络I / O.从表面上看,这似乎表明了一个设计问题。