dvlper
驱动牛犊
驱动牛犊
  • 注册日期2003-11-25
  • 最后登录2004-12-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2456回复:4

如何遍历已安装的协议,在2k下?

楼主#
更多 发布于:2003-11-28 21:03
在《网络数据包的拦截技术》一文中作者提到NDIS_PROTOCOL_BLOCK结构,利用该结构中的NextProtocol(win me,98下)可以遍历已安装的协议,在2K DDK中并没有给出NDIS_PROTOCOL_BLOCK的结构定义,无法做遍历,试图强行用NextProtocol做遍历,安装passthru后导致系统重起,请大侠们指教。
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-01 13:34
不懂,不过我知道用NetCfg给出的一些接口可以做遍历.
首先用INetCfg的QueryNetCfgClass接口获取INetCfgClass接口,比如:

INetCfg *pnc;
INetCfgClass *pncclass;
pnc->QueryNetCfgClass( &GUID_DEVCLASS_NETTRANS,
                                IID_INetCfgClass,
                                (PVOID *)&pncclass );

然后用pncclass->EnumComponents进行枚举就可以了.
在某个头文件里,下面这几个GUID可以找到:
GUID_DEVCLASS_NETCLIENT // client
GUID_DEVCLASS_NETSERVICE // service           GUID_DEVCLASS_NETTRANS // protocol
GUID_DEVCLASS_NET // netcard

具体哪个里面一时找不到了,或者自己定义也可以,对应注册表LocalMachine->CurrentControlSet->Control->Network的四个子键名,比如{4D36E972-E325-11CE-BFC1-08002BE10318}就是网卡类的GUID,大伙儿都是知道的了.
写驱动不如买足彩!!
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-01 13:39
另外NDIS_PROTOCOL_BLOCK结构DDK里是没有给出,但可以在ndis.h中找到.类似的结构很多,一般非文档化的东西DDK都不会给出,但仍然是公开的结构.
写驱动不如买足彩!!
dvlper
驱动牛犊
驱动牛犊
  • 注册日期2003-11-25
  • 最后登录2004-12-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-01 16:24
DDK中也没有给出这个结构,真是很郁闷!
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-01 17:04
晕!!!
写驱动不如买足彩!!
游客

返回顶部