pzqxidian
驱动牛犊
驱动牛犊
  • 注册日期2003-12-10
  • 最后登录2004-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:840回复:1

急!!!!!!!机子出现重启怎么办?

楼主#
更多 发布于:2003-12-11 10:14
我现在要作一个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()里调用,现在出现问题了,改如何修改,请各位高手指点!多谢了!!!!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-11 12:48
用softice跟踪一下加载过程。
游客

返回顶部