能力值:
( LV2,RANK:10 )
|
-
-
2 楼
A发给B网卡,网卡类型一定是相配,不然你发送的数据,可能丢包或者收不到数据包。
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
嗯,我的主要目的是将物理网卡收到的包,从某一个MS Loopback Adapter发出去,再将MS Loopback Adapter与GNS3(一个网络仿真软件)中的host绑定,这样就可以用外部的主机替换掉GNS3中的主机。应该都是以太网标准的,我不知道你说的网卡类型是不是这个意思呢?
现在问题是GNS3中有多个host与运行GNS3主机上的多块MS Loopback Adapter对应,我怎么选择从哪个MS Loopback Adapter发出去呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我说的是这个意思,网卡类型一定要对应,A网卡跟b网卡一定要同类型,要不然你所发的数据不会收到或者只收到一些。你分发试试,把其他网卡都关闭了,只留一个网卡,然后开两个试一下,在然后全开,不知你能理解否?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
先用网卡的GUID打开网卡得到句柄,再用那个句柄发包即可
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
谢谢两位,我发现PtBindAdapter会被每个物理网卡调用一次,其传入参数DeviceName就是GUID,但是有几点疑问:
1)PtBindAdapter除了绑定每个物理网卡,还会绑定一个叫\Device\ndisipwan的东西,这个是什么?从没有见过
2)我的这份passthru里NdisOpenAdapter是下面这样调用的,貌似是把得到的网卡句柄放到pAdapt->BindingHandle里,这样的话多个网卡的话岂不是只保留了最后绑定的网卡的句柄?我看了一下MPSend、MPSendPackets里的NdisSend参数都是这个BindingHandle,也就是说passthru默认所有的包都从最后绑定的网卡发出去,这样在多网卡的环境下岂不是会出错啊?
NdisOpenAdapter(Status,
&Sts,
&pAdapt->BindingHandle,
&MediumIndex,
MediumArray,
sizeof(MediumArray)/sizeof(NDIS_MEDIUM),
ProtHandle,
pAdapt,
DeviceName,
0,
NULL);
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
哦,我错了,pAdapt这个结构本身就在一个链表里,但是还有一个问题:
我在Win7里(共五块网卡:物理网卡、VMNet1、VMNet2、VMNet8、MS Loopback)测试发现,在PtBindAdapter里只能绑定到物理网卡、MS Loopback、ndiswanip、ndiswanipv6 、ndiswanbh,却绑不到VMNet的网卡。另外ndiswanip查了一下貌似是PPPoE广域网用的,具体是干什么用的呢?是说如果电脑直接连广域网拨号上网的话,就用这个网卡?那ndiswanbh呢?
另外我再2003 sp2虚拟机里(物理网卡1、物理网卡2、MS Loopback)也试了一下,发现只能绑定到两块物理网卡和ndiswanip,MS Loopback都绑定不到,请问这又是怎么回事呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
很久没玩NDIS了,记得中间层只能绑定物理网卡。
|
|
|