阅读:1455回复:1
各位大哥救命啊,自定义包一NDISSEND就蓝屏幕
我没分但请各位大侠帮忙!!!!!!!
这段代码是这样的, 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); } |
|
沙发#
发布于:2007-10-09 10:46
顶起
顶起 |
|