Nemesis2k
驱动牛犊
驱动牛犊
  • 注册日期2002-03-29
  • 最后登录2004-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1379回复:1

NDIS IM driver 的一个流程以及关于绑定的一个问题。。。

楼主#
更多 发布于:2002-03-30 11:31
我对于一个NDIS IM driver (以passthru为例)的流程是这么理解的:
1) 系统调用 DriverEntry
2) 系统调用 PtBindAdapter
3) PtBindAdapter 调用 NdisOpenAdapter
4) PtBindAdapter 调用 NdisIMInitializeDeviceEx
   传入一个 ProtocolBindContext,就是保存我们
   自己的一些信息了。在passthru里面就是 ADAPT 结构。
5) NdisIMInitializeDeviceEx 调用 MPInitialize
6) MPInitiailize 调用 NdisIMGetDeviceContext 获取
   4 里面的 ProtocolBindContext
7) MPInitiailize 申请VirtualNicContext,注意passthru没有
   申请,他只用了一个ADAPT结构来同时作为ProtocolBindContext
   和 VirtualNicContext
8) MPInitialize 调用MPSetAttributesEx,传入
   VirtualNicContext。
9) MPInitialize 返回
10) 再上层的protocol driver可以绑定到我们生成的
   vitual nic.
我的问题是:再上层的protocol driver真的是在MPInitiailize
成功返回后才被系统调用他的PtBindAdapter然后绑定到达我们的
吗?他调用NdisOpenAdapter的时候我们的哪个函数会被回掉,还是
只有NDIS Library被调用?如果有多个Protocol driver绑定到
我们,与只有一个protocol绑定到我们,对我们会有什么影响,要不要特殊考虑这种情况?

 

最新喜欢:

txysptxysp
mister
驱动牛犊
驱动牛犊
  • 注册日期2001-11-25
  • 最后登录2013-02-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望26点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-30 13:23
是的,因为只有本层(中间层)的MPInitiailize成功返回后,中间层才成功地建立一个虚拟的NIC,并在NDIS上进行记录(由MPInitiailize传进来的参数MiniprotAdapterHandle就是句柄)。
等上层来进行绑定而调用上层的ProtocolBindAdapter,NDIS就将刚刚虚拟好的NIC用DeviceName做参数,让上层进行绑定。
而上层有一个或多个PROTOCOL并没有关系。
游客

返回顶部