我试图找到通过以太网第 2 层同时发送和接收的最佳方法,在这种情况下,使用 Windows 上的 NDIS 驱动程序。我评估的方法如下:
- 具有两个独立线程和 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)
- 使用 Miniport Mux NDIS。我认为它可以使用单个网卡同时发送和接收,但我不确定。
问题:
通过单个网络接口执行同时通信的最佳方法是什么?
为什么第 1 点中的 DeviceIoControl 函数不起作用,只能将一个驱动程序或它的一个实例链接到外围设备?
非常感谢。此致。