阅读:1499回复:4
请问DDK中的例子passthru中的PtReceive函数应该怎样去修改成可以显示数据包内容?
我在网上找到那么一段代码,它说是在PtReceive中修改的,
PUCHAR pPacketContent; PUCHAR pBuf; UINT BufLength; MDL *pNext; UINT i; ------------------------------------------------------------------- NdisQueryPacket(Packet,NULL,NULL,NULL,&PacketSize); Status=NdisAllocateMemory(&pPacketContent,2000,0,HighestAcceptableMax); if(Status!=NDIS_STATUS_SUCCESS) return Status; NdisZeroMemory(pPacketContent,2000); NdisQueryBufferSafe(Packet->Private.Head,&pBuf,&BufLength,32); NdisMoveMemory(pPacketContent,pBuf,BufLength); i=BufLength; pNext=Packet->Private.Head; for(;;) { if(pNext==Packet->Private.Tail) break; pNext=pNext->Next; if(pNext==NULL) break; NdisQueryBufferSafe(pNext,&pBuf,&BufLength,32); NdisMoveMemory(pPacketContent+i,pBuf,BufLength); i+=BufLength; } 代码就是这样,我用的是windows2003 server,但我把它加到PtReceive函数中,加载驱动时就会蓝屏,请问应加到哪里才正确? |
|
沙发#
发布于:2007-04-26 08:49
考虑释放空间问题了吗?重要是找到错误出在哪里
|
|
|
板凳#
发布于:2007-04-26 12:16
用ndis自带的库函数来查阅包比较好
|
|
地板#
发布于:2007-04-26 13:52
引用第2楼dfbb1980于2007-04-26 12:16发表的“”: 可以举个例子吗?具体是什么函数?我最终是要把数据包显示为 FF FF FF FF FF FF 05 18 22 44 12 4E.......这种形式的 |
|
地下室#
发布于:2007-04-27 11:04
用ndisgetnextbuffer 不要直接用Packet->Private.Head 和 Packet->Private.Tail
|
|