xtaddqqug
驱动牛犊
驱动牛犊
  • 注册日期2002-06-14
  • 最后登录2008-11-29
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望6点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1340回复:1

大佬asmsys请进

楼主#
更多 发布于:2004-03-28 20:21
NDIS_HANDLE NdisIMGetDeviceContext(IN NDIS_HANDLE  MiniportAdapterHandle);
NDIS_HANDLE NdisIMGetBindingContext(IN NDIS_HANDLE  NdisBindingHandle);这两个函数反回的到底是什么,
device context area 中是否有NIC的MAC地址。

最新喜欢:

hxqw2000hxqw20...
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-29 10:07
在passthru.h中定义了一个结构typedef struct _ADAPT{}
NdisIMGetDeviceContext返回的就是指向该结构的指针。
我认为每个协议都可以定义一个这样的结构,DDK叫做
“device context area”。用来保存一些相关的信息。
如果你的上层协议如TCPIP.SYS调用了NdisIMGetBindingContext
他得到的也是指向你这个struct _ADAPT{}的指针,但是
他不敢使用,因为他不知道里边的数据是如何分布的。
同样,你在IMD调用了NdisIMGetBindingContext,将得到
下层的“device context area”,如果下层有定义的话,
否则,返回空,当然,你也不能使用他的数据,除非下层
协议也是你开发的,你就可以知道该结构的定义,并可以使用
其中的数据。也就是说,他提供了一个协议间沟通的渠道,
但沟通的方式(即_ADAPT的格式)有开发者自己协商。
struct _ADAPT{}是自己用的结构,但在passthru->
protocol.c->PtBindAdapter->NdisOpenAdapter
的调用中,把该结构传递给NdisOpenAdapter,并不是
要NDIS使用该结构,而是在随后的MPInitialize调用中,
NDIS又把该结构传递给MPInitialize,因此,在MPInitialize
中可以使用pAdapt = NdisIMGetDeviceContext(MiniportAdapterHandle);
取得该结构。
总的来讲,NdisIMGetDeviceContext是用来取得自己的struct _ADAPT{}
NdisIMGetBindingContext用来取得下层的struct _ADAPT{}。
至于里边是否有MAC,完全取决于开发者,而与NDIS系统无关。
游客

返回顶部