sharc2002
驱动牛犊
驱动牛犊
  • 注册日期2002-04-07
  • 最后登录2013-05-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望32点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2315回复:8

Miniport driver 中调用NdisMInitializeWrapper() 问题?

楼主#
更多 发布于:2002-08-06 20:04
Miniport driver 中调用NdisMInitializeWrapper(),向NDIS 注册,返回一个 Handle, 请问这个 Handle 实际上是什么的句柄,指向什么结构?
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-07 09:49
看DDK中的NdisMRegisterMiniport 函数和NdisTerminateWrapper函数,在我的驱动里,好象其他地方没有用到那个HANDLE,嘿嘿.
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-07 18:14
这个Handle是Ndis自己用的,你的注册无非就是把多个函数入口告诉Ndis,Ndis得有地方把它记下来,Handle就是做这个的。
写驱动不如买足彩!!
sharc2002
驱动牛犊
驱动牛犊
  • 注册日期2002-04-07
  • 最后登录2013-05-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望32点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-07 20:51
 当 NDIS 调用 MiniportInitialize() 函数时,有一上下文相关的参数 WrapperConfigurationContext。因为在这之前,NIC Driver 仅仅调用了NdisMInitializeWrapper( ) 函数和NdisMRegisterMiniport() 函数,而NdisMRegisterMiniport() 函数没有对NIC Driver 返回任何东西。所以能不能认为这个WrapperConfigurationContext 和NdisMInitializeWrapper( ) 函数返回的Handle 有着直接的关联?这样当WrapperConfigurationContext 传递给NdisOpenConfiguration() 等函数时,实际上就是NDIS 把本 NIC Driver 的相关的环境变量(如注册表路径等)传递到NIC Driver 中了,然后NdisOpenConfiguration( ) 等函数才能得到相应正确的信息。
   不知理解对否?望指点,多谢了!
ufo_online
驱动牛犊
驱动牛犊
  • 注册日期2002-04-26
  • 最后登录2004-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-08 09:08
 
当 NDIS 调用 MiniportInitialize() 函数时,有一上下文相关的参数 WrapperConfigurationContext。因为在这之前,NIC Driver 仅仅调用了NdisMInitializeWrapper( ) 函数和NdisMRegisterMiniport() 函数,而NdisMRegisterMiniport() 函数没有对NIC Driver 返回任何东西。所以能不能认为这个WrapperConfigurationContext 和NdisMInitializeWrapper( ) 函数返回的Handle 有着直接的关联?这样当WrapperConfigurationContext 传递给NdisOpenConfiguration() 等函数时,实际上就是NDIS 把本 NIC Driver 的相关的环境变量(如注册表路径等)传递到NIC Driver 中了,然后NdisOpenConfiguration( ) 等函数才能得到相应正确的信息。
不知理解对否?望指点,多谢了!

你没看到NdisMRegisterMiniport的用法吗?
NDIS_STATUS
   NdisMRegisterMiniport(
       IN NDIS_HANDLE NdisWrapperHandle,
       IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
       IN UINT CharacteristicsLength
       );

其中第一个输入参数就是NdisMInitializeWrapper返回的Handle。DDK中说,DriverEntry associates the miniport NIC driver with NDIS by calling NdisMInitializeWrapper, and passing the pointer to the driver object and to the registry path. NdisMInitializeWrapper allocates a structure to represent this association, stores the miniport-specific information it needs in this structure and returns NdisWrapperHandle, which is a handle to this structure representing the miniport NIC driver. The driver must retain and pass this handle to NdisMRegisterMiniport when it registers its entry points, and to NdisTerminateWrapper if it cannot successfully complete its DriverEntry function, if it cannot successfully initialize its NIC, or when it is unloaded. NDIS will use NdisWrapperHandle to identify the miniport. While the miniport must retain this handle, it should never attempt to access or modify the contents of the structure associated with this handle.

sharc2002
驱动牛犊
驱动牛犊
  • 注册日期2002-04-07
  • 最后登录2013-05-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望32点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-08 20:58
 那请问 NdisMInitializeWrapper( ) 函数返回的NdisWrapperHandle 和 NDIS 传入到 MiniportInitialize( ) 的
MiniportAdapterHandle 参数是同一个东东吗?
ufo_online
驱动牛犊
驱动牛犊
  • 注册日期2002-04-26
  • 最后登录2004-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-09 08:49
MiniportInitialize( ) 的MiniportAdapterHandle 参数是由NDIS通过你所注册的InitializeHandler传的参数,这个InitializeHandler函数的所有参数跟MiniportInitialize( ) 相同。你要调用MiniportInitialize( ) 的话,应该是在这个函数中调用的,而不是在DriverEntry中调用的。

[编辑 -  8/9/02 by  ufo_online]
sharc2002
驱动牛犊
驱动牛犊
  • 注册日期2002-04-07
  • 最后登录2013-05-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望32点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-09 22:41
看到一篇文章,上面说“调用NdisMInitializewapper函数向ndis接口报告驱动程序将以miniport类网卡驱动程序注册。ndis建立它需要记录的驱动程序状态信息,同时返回 Ndiswrapperhandle,驱动程序保存这个句柄,以利后来调用Ndisxxxconfiguration和Initialization等函数。”
ufo_online
驱动牛犊
驱动牛犊
  • 注册日期2002-04-26
  • 最后登录2004-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-12 08:40
你还是认真地看看DDK吧!
游客

返回顶部