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