dyhss
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望50点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1456回复:1

各位大哥救命啊,自定义包一NDISSEND就蓝屏幕

楼主#
更多 发布于:2007-05-27 13:24
我没分但请各位大侠帮忙!!!!!!!
这段代码是这样的,
static UCHAR WritePacketData[74]={0x00,0x15,0xAF,0x1C,0x6C,0xDE,
0x00,0xE0,0x4C,0xF0,0x38,0x43,
0x08,0x00,
0x45,0x00,0x00,0x3C,0x00,0xC5,0x00,0x00,0x80,0x01,0xB5,0x72,0xC0,0xA8,0x01,0x9E,0xC0,0xA8,0x01,
0x9B,
0x00,0x00,0x1D,0x5C,0x04,0x00,0x34,0x00,
0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,
0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69};


  HighestAcceptableAddress.LowPart = -1;
   HighestAcceptableAddress.HighPart = -1;


   Status = NdisAllocateMemory(&pPacketContent1, 2000, NDIS_MEMORY_NONCACHED, HighestAcceptableAddress);//分配内存
   if (Status != NDIS_STATUS_SUCCESS )
   {
          DbgPrint("alloc ndis memory faile22!\n");
       return NDIS_STATUS_FAILURE;
   }
   if(pPacketContent == NULL)
   {
       return NDIS_STATUS_FAILURE;
   }
   RtlZeroMemory(pPacketContent1, 2000);



   //两位协议
  pPacketContent1[12] = 0x08;
   pPacketContent1[13] = 0x00;

   for(uOffset = 0; uOffset < 74; uOffset++)
   {
       pPacketContent1[uOffset] = WritePacketData[uOffset];
   }


for(uOffset = 0; uOffset < PacketLen; uOffset++)
{
    DbgPrint("%d\n",pPacketContent1[uOffset]);
}

 //  pAdapt = pAdaptList;

   //ASSERT(pAdapt->pSecondaryAdapt);
   //pAdapt = pAdapt->pSecondaryAdapt;

   if(IsIMDeviceStateOn(pAdaptList) == FALSE)
   {
       return NDIS_STATUS_FAILURE;
   }

   NdisAllocatePacket(&Status, &MyPacket, pAdaptList->SendPacketPoolHandle);//在包池里分配一个包
   if (Status != NDIS_STATUS_SUCCESS)
   {
            DbgPrint("PacketBuffer分配包 失败!");
       return Status;
   }
   DbgPrint("PacketBuffer分配包 成功!");

   NdisAllocateBuffer(&Status, &PacketBuffer, pAdaptList->SendPacketPoolHandle, pPacketContent1, 2000);//分配buffer
   if (Status != NDIS_STATUS_SUCCESS)
   {
       DbgPrint("PacketBuffer分配buffer 失败!");
       return Status;
   }
   DbgPrint("PacketBuffer分配buffer 成功!");

   NdisChainBufferAtFront(MyPacket, PacketBuffer); //绑定Buffer到MyPacket

   MyPacket->Private.Head->Next=NULL;
   MyPacket->Private.Tail=NULL;
   NdisSetPacketFlags(MyPacket, NDIS_FLAGS_DONT_LOOPBACK);
  
   //MyReceive(MyPacket);
   NdisSend(&Status, pAdaptList->BindingHandle, MyPacket);//发送

   if (Status != NDIS_STATUS_PENDING)
   {
       NdisUnchainBufferAtFront(MyPacket ,&PacketBuffer);
    //   NdisQueryBufferSafe(PacketBuffer,(PVOID *)&pPacketContent1,&bufLength,32);
      
       NdisFreeBuffer(PacketBuffer);
       NdisFreeMemory(pPacketContent,2000,0);
       NdisDprFreePacket(MyPacket);

   }
xiaoks46
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2011-06-22
  • 粉丝0
  • 关注0
  • 积分501分
  • 威望170点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-09 10:46
顶起
顶起
游客

返回顶部