阅读:2168回复:2
为什么在网卡开启硬件校验和后NdisSend发送的包校验和为0
我在驱动中拦截MPSendPackets函数 把包复制一份后返回 然后自己调用NdisSend发包 为何开启网卡硬件校验和后包的校验和变为0了? 客户端收到包后发现校验和不对就丢弃了 而关闭硬件校验和后就可以正常通讯
开启硬件校验和不是由网卡计算校验和吗 为何不能网卡校验失败? 难道要给自己申请的包设置标志? 如果要设置标志 请问具体设置哪些标志? |
|
沙发#
发布于:2012-11-23 18:12
最好把原始包的标识都给加上
|
|
|
板凳#
发布于:2012-12-03 17:02
NDIS_TCP_IP_CHECKSUM_PACKET_INFO ChecksumInfo;
ChecksumInfo.Value = NET_BUFFER_LIST_INFO(NetBufferList,TcpIpChecksumNetBufferListInfo); 获取新克隆包的带外数据中校验和减荷标志位,查看是否与原始数据包相关同,如果不同则将其设置为相同。 也可先抓包看一下被克隆的包是否正常发出,再做以上处理。 |
|