wnl0008
驱动牛犊
驱动牛犊
  • 注册日期2007-06-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分2分
  • 威望33点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
阅读:1669回复:7

NdisAllocateBufferPool的问题,请高手们帮帮我!

楼主#
更多 发布于:2007-09-14 15:42
在驱动初始化里面:
   NdisAllocateBufferPool(&Status,&PoolHandle,16);
      ASSERT(Status==NDIS_STATUS_SUCCESS);
没有触发断言,但是PoolHandle为0,虽然DDK里面说0是有效值,但是调用
   NdisAllocateBuffer(&Status,&Buffer,PoolHandle,PacketBuffer,PacketLength);
怎么也不成功,然后系统会蓝屏,这是什么问题呀,各位高手们?
wnl0008
驱动牛犊
驱动牛犊
  • 注册日期2007-06-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分2分
  • 威望33点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-18 16:06
NdisAllocateBufferPool(&Status,&PoolHandle,16);是在驱动初始化里面调用的,
NdisAllocateBuffer(&Status,&Buffer,PoolHandle,PacketBuffer,PacketLength);
是在延迟过程调用里面调用的。这两个函数的执行级别不都是IRQL <= DISPATCH_LEVEL吗?即使都在初始化里面调用也应该没问题的吧?这个程序我是用DS写的,是否DS框架封装了什么?能帮我解答一下吗,非常感谢,^_^
wnl0008
驱动牛犊
驱动牛犊
  • 注册日期2007-06-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分2分
  • 威望33点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-19 13:34
呵呵,我是个驱动初学者,对这块不是很熟悉。一个函数的执行级别IRQL <= DISPATCH_LEVEL,是否就说明在执行级别小于或等于DISPATCH_LEVEL的例程中都能调用,如果是这样的话,PASSIVE_LEVEL是小于DISPATCH_LEVEL的啊。小心虚心向各位前辈请教....
wnl0008
驱动牛犊
驱动牛犊
  • 注册日期2007-06-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分2分
  • 威望33点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-20 15:00
谢谢各位,感激不尽!NdisAllocateBufferPool就只有三个参数啊。
这个问题已经解决,改为在PASSIVE_LEVEL分配就对了,呵呵。在DSIPATCH_LEVEL用NdisAllocateMemoryWithTag都不成功,不明白什么原因!
还想请教两个问题:
    1、MiniportReturnPacket作用除了回收资源,还有其他用吗?如果不需要回收资源,是否就不要用了?
    2、上层IP地址的时候,底层驱动会有哪些动作呢?
游客

返回顶部