如何在内核模式驱动程序中使用 Winsock Kernel (WSK) 发送原始套接字数据包?
Posted
技术标签:
【中文标题】如何在内核模式驱动程序中使用 Winsock Kernel (WSK) 发送原始套接字数据包?【英文标题】:How to send raw socket packets using Winsock Kernel (WSK) in kernel-mode driver? 【发布时间】:2015-07-22 07:50:17 【问题描述】:我正在为 Win7 及更高版本开发一个内核模式驱动程序。我想在驱动程序中发送自定义 IP 数据包(我想为 IP 层指定所有字段)。我找到了 Winsock Kernel (WSK) 技术,但它只说明了如何发送和接收 TCP 和 UDP 数据包。我知道在用户模式下,WinSock API 中有 raw socket。所以我想知道Winsock 内核是否也有一个原始套接字接口?谢谢。
【问题讨论】:
【参考方案1】:WskSocket
支持 TCP
、UDP
和自定义 IP 包的“原始套接字”:https://msdn.microsoft.com/en-us/library/windows/hardware/ff571149%28v=vs.85%29.aspx
SocketType [in]
The type of socket that is being created. The following socket types are supported: SOCK_STREAM Supports reliable connection-oriented byte stream communication. SOCK_DGRAM Supports unreliable connectionless datagram communication. SOCK_RAW Supports raw access to the transport protocol.
【讨论】:
好像是对的,但是我没有找到发送原始数据包的功能? TCP 数据包可以使用SendData
发送,UDP 数据包使用SendDatagram
。最好能提供例子。以上是关于如何在内核模式驱动程序中使用 Winsock Kernel (WSK) 发送原始套接字数据包?的主要内容,如果未能解决你的问题,请参考以下文章