skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1670回复:7

再问NdisIMInitializeDeviceInstanceEx?????

楼主#
更多 发布于:2002-12-06 17:27
我是自己写的驱动,再调用ProtocolBindAdapter里面,我使用了NdisOpenAdapter函数,但是,而且在其前面进行了POOL的和PACKET的分配,这些初始化的过程没有出错,但是在其后调用NdisIMInitializeDeviceInstanceEx向NDIS申明调用MiniportInit的时候却荡机了,是出现了页错误,我看了NdisIMInitializeDeviceInstanceEx函数的说明,是要求必须保证NdisOpenAdapter调用成功,但是,我的NdisOpenAdapter返回的是NDIS_STATUS_PENDING,我跟踪了passthru,它也是返回的NDIS_STATUS_PENDING,但它的调用却是成功的,请各位指明方向,先谢谢了
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-06 17:31
Passthru 中,如果 NdisOpenAdapter 返回 NDIS_STATUS_PENDING,它会等待操作完成之后才继续执行。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-06 17:37
你这样做试试看

ProtocolBindAdapter函数里
// 此处Status为调用NdisOpenAdapter的返回状态
if( Status != NDIS_STATUS_PENDING )
   ProtocolOpenAdapterComplte( ...)

在ProtocolOpenAdapterComplete函数里
if( Status == NDIS_STATUS_SUCCESS )
  NdisIMInitializeDeviceInstanceEx(...)

也就是说你应该在你的ProtocolOpenAdapterComplete函数里进行初始化
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-06 17:40
谢谢,那么所谓的操作是不是指的是指系统会去调用NdisCompleteOpenAdapter???,还是指的其他的操作呢?我看Passthru的上面的系统调用中也没有做什么事情呀?或者你指的是等待那个SPINLOCK??
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2002-12-06 17:42
就是,你不看这句吗?
if(*Status == NDIS_STATUS_PENDING)
{
  NdisWaitEvent(&pAdapt->Event, 0);
  *Status = pAdapt->Status;
}

if(*Status != NDIS_STATUS_SUCCESS)
{
  break;
}
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-06 17:44
bingjie,你是指的是直接手动调用ProtocolCompleteAdapterOpen这个函数,你上面是不是应该把!=换成==??
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-06 17:47
谢谢frack,有人讨论的感觉真是帅呆了,再问一下,所谓的Event,是必须的,也就是说等待是必须的???我没有搞清楚,在Passthru中这样做的目的???好像是多次用到的???
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-06 17:49
我注释掉这句也没有问题呀???
游客

返回顶部