微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 WriteFile 到 NDIS 会发送重复的帧?

如何解决为什么 WriteFile 到 NDIS 会发送重复的帧?

大家好,提前感谢您的帮助,

我正在使用 WriteFile 函数 (fileapi.h) 直接在 MAC 地址之间将帧发送到以太网第 2 层级别的 Ndis 驱动程序。

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

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

问题:

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

我看到了 this post,并按照建议卸载和安装 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 %p\n",Handle));
            break;
        }

解决方法

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

我正在使用的 NDIS driver 的编译在 NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK 文件中带有 send.c 标志。

因此,根据this page的解释,可以取消原始计算机中的重复消息,因为在命运计算机中,这些最终没有到达内部循环。

最好的问候。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。