阅读:1867回复:9
NdisAllocatePacketPool ==> 系统崩溃???!!!
我在NDIS HOOK 程序的初始化模块(WIN2000)中调用NdisAllocatePacketPool函数,但会导致系统蓝屏,系统提示分页错误,请教各位有没有遇到过相似的情况?
|
|
沙发#
发布于:2002-11-19 17:48
怎么调用的?
|
|
|
板凳#
发布于:2002-11-19 17:55
我分别在程序的几个位置调用:
NdisAllocatePacketPool( &status, packetpool, PACKET_NUMBER, sizeof(PACKET_RESERVED) ); if(status!=NDIS_STATUS_SUCCESS){ dprintf((\"failed to allocate packet pool!!!!\")); } NdisAllocateBufferPool( &status, bufferpool, BUFFER_NUMBER); if(status!=NDIS_STATUS_SUCCESS){ dprintf((\"failed to allocate buffer pool!!!!\")); } 都会导致系统崩溃。 |
|
地板#
发布于:2002-11-19 18:04
NdisAllocatePacketPool(
&status, packetpool, PACKET_NUMBER, sizeof(PACKET_RESERVED) ); 中的packetpool给错了吧,应该是&packetpool,这里应该是一个NDIS_HANDLE的指针类型。 另外bufferpool也要改为&bufferpool |
|
地下室#
发布于:2002-11-19 21:02
一个地方就行了, 那两个地方要指针的地址, |
|
|
5楼#
发布于:2002-11-19 21:37
再此请教一下:
我调用NdisTransferData( &status, NdisBindingContext, MacReceiveContext, 0, PacketSize, packet, &BytesTransferred); 时,在packet结构体中除了连接一个buffer之外还需要填充什么信息?我的程序在运行到此函数数时系统崩溃! |
|
6楼#
发布于:2002-11-19 23:03
首先分配packet,然后分配一块packetsize大小的内存,然后用一个buffer描述符指向这块内存,然后把buffer描述符chainatfront到一个packet上,就ok了
|
|
|
7楼#
发布于:2002-11-20 13:06
我就是这样做的呀:(
|
|
8楼#
发布于:2002-11-20 13:08
传递的参数有问题吧,这个得自己找了,
|
|
|
9楼#
发布于:2002-11-20 13:10
肯定是在packet描述符、BUF描述符、BUF这三个关系中出错。好好找找
|
|
|