racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2550回复: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
 
yexin218
驱动牛犊
驱动牛犊
  • 注册日期2008-02-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分72分
  • 威望384点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-12-13 01:34
http://msdn.microsoft.com/en-us/library/ms795650.aspx
你的errocode好像有问题吧,找不到都是0de .
racle
驱动牛犊
驱动牛犊
  • 注册日期2009-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望251点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-12-14 03:20
烦请兄弟指点一二.
forxy
驱动牛犊
驱动牛犊
  • 注册日期2010-08-02
  • 最后登录2013-01-15
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-08-02 18:17
blog.csdn.net/forxy/archive/2010/08/02/5783382.aspx

我的解决方法:
游客

返回顶部