0

我试图找到通过以太网第 2 层同时发送和接收的最佳方法,在这种情况下,使用 Windows 上的 NDIS 驱动程序。我评估的方法如下:

  1. 具有两个独立线程和 NDIS 驱动程序(fileapi.h Win32)的同步功能。通过这种方式,我设法打开了驱动程序的两个句柄,但我没有设法独立链接两次网卡。有两张独立的卡,一张读卡,一张写卡,工作没有任何问题。信息:在可以使用此方法的位置(在@falstaff 的最终评论中)发布。

第一个函数在两个线程中都能正常工作,第二个函数 (DeviceIoControl) 在第二次执行时失败。它表明无法重做第二个绑定,我曾希望通过单独的线程来实现。

Handle = CreateFileA(
            pDeviceName,
            DesiredAccess,
            ShareMode,
            lpSecurityAttributes,
            CreationDistribution,
            FlagsAndAttributes,
            NULL
            );
DeviceIoControl(
            Handle,
            IOCTL_NDISPROT_BIND_WAIT,
            NULL,
            0,
            NULL,
            0,
            &BytesReturned,
            NULL)
  1. 使用 Miniport Mux NDIS。我认为它可以使用单个网卡同时发送和接收,但我不确定。

问题:

  • 通过单个网络接口执行同时通信的最佳方法是什么?

  • 为什么第 1 点中的 DeviceIoControl 函数不起作用,只能将一个驱动程序或它的一个实例链接到外围设备?

非常感谢。此致。

4

0 回答 0