阅读:841回复:1
急!!!!!!!机子出现重启怎么办?
我现在要作一个ndis驱动,在xpassthru的基础上加了数据接收到的数据的代码,可是只要一安装就重启,并且进入篮屏,代码如下:
#include \"prexsim.h\" #define DATA_LENGTH 2048 BOOLEAN PtDowithMessage(IN PNDIS_PACKET packet) { UINT PacketSize; PUCHAR pPacketContent = NULL; PUCHAR pBuf = NULL; UINT BufLength; PNDIS_BUFFER pNext; //typedef MDL NDIS_BUFFER, *PNDIS_BUFFER; UINT backlength; UINT i; PIPHEADER ip; struct in_addr addr; NDIS_STATUS status; DBGPRINT(\"\\nxfilter is running...\\n\"); NdisQueryPacket(packet,NULL,NULL,&pNext,&PacketSize); status= NdisAllocateMemory(&pPacketContent,DATA_LENGTH,0,HighestAcceptableMax); if (status!=NDIS_STATUS_SUCCESS ) return FALSE; else return TRUE; NdisZeroMemory(pPacketContent, DATA_LENGTH); NdisQueryBufferSafe(packet->Private.Head, &pBuf, &BufLength, 32 ); NdisMoveMemory(pPacketContent, pBuf, BufLength); backlength = 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+backlength,pBuf,BufLength); backlength+=BufLength; } DbgPrint(\"\\nMAC:\"); for(i = 0;i<12;i++) DbgPrint(\"%x.\",pPacketContent); DbgPrint(\"\\n\"); DbgPrint(\"Protocol:%x.%x\\n\",pPacketContent[12],pPacketContent[13]); if(pPacketContent[12] == 0x08 && pPacketContent[13] == 0x00) { pPacketContent = pPacketContent + 14; ip = (PIPHEADER)pPacketContent; DbgPrint(\"IP head length:%d\\n\",ip->ip_head_length); DbgPrint(\"IP data length:%d\\n\",ip->ip_data_gram_length); DbgPrint(\"IP protocol:%d\\n\",ip->ip_Protocol); addr.S_addr = ip->ip_source; DbgPrint(\"IP source:%d.%d.%d.%d\\n\", addr.S_un_b.s_b1,addr.S_un_b.s_b2,addr.S_un_b.s_b3,addr.S_un_b.s_b4); addr.S_addr = ip->ip_dest; DbgPrint(\"IP Dest:%d.%d.%d.%d\\n\", addr.S_un_b.s_b1,addr.S_un_b.s_b2,addr.S_un_b.s_b3,addr.S_un_b.s_b4); } return TRUE; } 这个函数在PtReceive()和PtReceivePacket()里调用,现在出现问题了,改如何修改,请各位高手指点!多谢了!!!! |
|
沙发#
发布于:2003-12-11 12:48
用softice跟踪一下加载过程。
|
|