linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
阅读:3303回复:8

在NDIS中能区分物理网卡和虚拟网卡吗?

楼主#
更多 发布于:2007-06-28 11:36
我做了个协议驱动,想绑定到机器的物理网卡上,但是如果机器上还安装了其它的虚拟网卡,如VMware的。则BindAdapterHandler会被调用好几次,并且进来的总是虚拟网卡先,物理网卡在后,但我真正想绑定的是物理网卡。那该如何区分呢?
这件事很难
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-02 20:13
在DDK例子中也没有提供这样的方法,难道连MS也无法识别吗? :)
这件事很难
rangzh
驱动小牛
驱动小牛
  • 注册日期2005-04-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望150点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-02 23:22
NDIS中肯定是要区分的,MiniportInitialize在调用NdisMSetAttributesEx时有一个标志就是指定是否是虚拟网卡的,而且安装文件中好像也有。
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-05 09:09
引用第2楼rangzh于2007-07-02 23:22发表的  :
NDIS中肯定是要区分的,MiniportInitialize在调用NdisMSetAttributesEx时有一个标志就是指定是否是虚拟网卡的,而且安装文件中好像也有。



多谢楼上的回答.
但是我仔细看了NdisMSetAttributesEx的参数,并没有哪个标志指明是虚拟网卡,安装文件中也是没有的.
况且我想知道的是在协议驱动中如何区分,而并不是说Miniport驱动是否能指明本身是虚拟网卡.

:) :)
这件事很难
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
地下室#
发布于:2007-07-06 10:37
用户被禁言,该主题自动屏蔽!
rangzh
驱动小牛
驱动小牛
  • 注册日期2005-04-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望150点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-17 22:47
引用第3楼linfeng1216于2007-07-05 09:09发表的  :



多谢楼上的回答.
但是我仔细看了NdisMSetAttributesEx的参数,并没有哪个标志指明是虚拟网卡,安装文件中也是没有的.
.......


注册Miniport的时候,应该就可以区分了吧。如果是中间驱动的虚拟网卡,NdisIMRegisterLayeredMiniport;如果是真实的物理网卡,NdisMRegisterMiniport

NdisMSetAttributesEx我记不清了

安装文件:
Characteristics里面有一个标志,即NCF_VIRTUAL,如果设置那么就是虚拟网卡
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-23 12:49
引用第5楼rangzh于2007-07-17 22:47发表的  :


注册Miniport的时候,应该就可以区分了吧。如果是中间驱动的虚拟网卡,NdisIMRegisterLayeredMiniport;如果是真实的物理网卡,NdisMRegisterMiniport

NdisMSetAttributesEx我记不清了
.......


谢谢rangzh,但你还是没明白我的意思。
我的是协议驱动,并非IMD驱动;
我想知道的是在协议驱动中如何区分,而并不是说Miniport驱动本身是否能指明是虚拟网卡。

系统中的每一块网卡都会调用我的BindAdapterHandler函数,不管是物理网卡还是虚拟网卡,所以我想问的就是如何在我的BindAdapterHandler函数中区分物理网卡和虚拟网卡?
这件事很难
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-07-23 12:51
引用第4楼gutian98于2007-07-06 10:37发表的  :
你不能去获取mini port的设备属性吗?设备属性里面有些信息你自己可以作判断的呀?!比如真实物理网卡有硬件id(pci,usb什么的),而虚拟网卡没有这样的id呀,这是我的一个思路,并没有验证过,楼主如果觉得可行的话你自己可以试试,记得把结果贴上来哈,谢谢!


虚拟网卡也有这样的ID。
这件事很难
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-09-19 09:13
完了,看来这个问题是没有答案了。
这件事很难
游客

返回顶部