阅读:1340回复:1
大佬asmsys请进
NDIS_HANDLE NdisIMGetDeviceContext(IN NDIS_HANDLE MiniportAdapterHandle);
NDIS_HANDLE NdisIMGetBindingContext(IN NDIS_HANDLE NdisBindingHandle);这两个函数反回的到底是什么, device context area 中是否有NIC的MAC地址。 |
|
最新喜欢:![]() |
沙发#
发布于: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系统无关。 |
|