为什么WriteFile到NDIS发送重复帧



大家好,提前感谢的帮助

我使用WriteFile函数(fileapi.h(直接在MAC地址之间向以太网第2层的NDIS驱动程序发送帧。

帧是正确发送的,但在我所做的任何测试中,帧都是重复发送的。我通过用WireShark捕获输出来检测到这一点,其中表示如下:

在我发送的帧中,每次发送都会增加一个计数器。此计数器在两个连续帧中重复,这两个帧具有WireShark指定的不同帧号。这不是由于网络中的消息丢失以及网络中另一个设备转发消息而随机发生的事情。它发生在发送的每一帧上,它们完全相同,包括每两帧递增一次的计数器。

问题:

  • NDIS驱动程序中是否有设置此重复输出的参数
  • 我是不是误解了WireShark的捕获

我看到了这篇文章,并按照建议卸载和安装了Ncap和WinCap,但没有什么不同。

非常感谢。顺致敬意,

bSuccess = (BOOLEAN)WriteFile(
Handle,
pWriteBuf,
PacketLength,
&BytesWritten,
NULL);
DWORD err = GetLastError();
printf("ERROR: %i", err);
if (!bSuccess)
{
PRINTF(("DoWriteProc: WriteFile failed on Handle %pn", Handle));
break;
}

解决了,我回答了我的问题。

我正在使用的NDIS驱动程序的编译是用send.c文件中的NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK标志准备的。

因此,根据本页的解释,有可能取消起源计算机中的重复消息,因为在命运计算机中,这些消息最终并不是内部循环。

致以最良好的问候。

相关内容

  • 没有找到相关文章

最新更新