racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2557回复:5

处理ReceivePacket蓝屏,代码求解

楼主#
更多 发布于:2009-12-12 06:40
在ReceivePacket里接收到一个TCP包,然后我复制其BUFF到一个新建的包里,然后把这个包交回给ReceivePacket继续处理.

代码如下:
PNDIS_PACKET pPacket(老包);

NdisBuffer=pPacket->Private.Head;
NdisQueryBufferSafe(NdisBuffer,&tembuffer,&copysize,NormalPagePriority);
uTotalLen=pPacket->Private.TotalLength;

NdisAllocatePacketPool(&Status,&gPacketPool,1,4*sizeof(PVOID));  //分配Packet池
if(Status != NDIS_STATUS_SUCCESS){return;}
NdisAllocatePacket(&Status,&MyPacket,gPacketPool);               //分配Packet
if(Status != NDIS_STATUS_SUCCESS){return;}

NdisAllocateBufferPool(&Status,&BufferPoolHandler,1);            //分配Buffer池
if(Status != NDIS_STATUS_SUCCESS){return;}
NdisAllocateBuffer(&Status,(PNDIS_BUFFER*)&tembuffer,BufferPoolHandler,tembuffer,uTotalLen);
if(Status != NDIS_STATUS_SUCCESS){return;}

NdisChainBufferAtFront(MyPacket,(PNDIS_BUFFER)tembuffer);          //关联BUFFER和包
MyPacket->Private.Head->Next=NULL;
MyPacket->Private.Tail=NULL; 
NDIS_SET_PACKET_HEADER_SIZE(MyPacket,14);
}
return ReceivePacket(MyPacket);  //交回给ReceivePacket继续处理.工作正常,但是有时蓝屏.



有时候会蓝屏,DUMP如下:

READ_ADDRESS:  00000008 

CURRENT_IRQL:  2

FAULTING_IP: 
NDIS!NdisReturnPackets+48
f72467fa 8b7308          mov     esi,dword ptr [ebx+8]

DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xD1

PROCESS_NAME:  http.exe

TRAP_FRAME:  f64cc9f4 -- (.trap 0xfffffffff64cc9f4)
ErrCode = 00000000
eax=ffffffff ebx=00000000 ecx=00000002 edx=00000002 esi=81bdef98 edi=81e33a58
eip=f72467fa esp=f64cca68 ebp=f64cca80 iopl=0         nv up ei pl zr na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010246
NDIS!NdisReturnPackets+0x48:
f72467fa 8b7308          mov     esi,dword ptr [ebx+8] ds:0023:00000008=????????
Resetting default scope

LAST_CONTROL_TRANSFER:  from 80874ad9 to 8081d97e

STACK_TEXT:  
f64cc5f0 80874ad9 00000003 00000008 00000000 nt!RtlpBreakWithStatusInstruction
f64cc63c 808758f6 00000003 00000008 f72467fa nt!KiBugCheckDebugBreak+0x19
f64cc9d4 80826493 0000000a 00000008 00000002 nt!KeBugCheck2+0x5b2
f64cc9d4 f72467fa 0000000a 00000008 00000002 nt!KiTrap0E+0x2a1
f64cca80 f6c53486 81bdefb0 00000001 f64ccc98 NDIS!NdisReturnPackets+0x48
f64cca98 f6c533f6 f64ccb18 f6c533f6 81bdef98 afd!AfdReturnBuffer+0xe4
f64ccd34 8082337b 0000063c 00000634 00000000 afd!AfdFastConnectionReceive+0x2be
f64ccd34 00000000 0000063c 00000634 00000000 nt!KiFastCallEntry+0xf8


STACK_COMMAND:  kb

FOLLOWUP_IP: 
NDIS!NdisReturnPackets+48
f72467fa 8b7308          mov     esi,dword ptr [ebx+8]

SYMBOL_STACK_INDEX:  4

SYMBOL_NAME:  NDIS!NdisReturnPackets+48

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: NDIS

IMAGE_NAME:  NDIS.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  42435dfa

FAILURE_BUCKET_ID:  0xD1_NDIS!NdisReturnPackets+48

BUCKET_ID:  0xD1_NDIS!NdisReturnPackets+48

Followup: MachineOwner
---------
racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-12-12 11:20
 
racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-12-12 19:01
 
racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-12-14 03:20
烦请兄弟指点一二.
游客

返回顶部