阅读:1203回复:3
一个使用miniport driver向上发送数据的问题,大哥大姐们帮忙看看?
我最近想改一下DDK里的netvmini例子,想在ioctrl收到read命令时候,发预想的一个udp->ip->mac的测试包。ip地址src用本机器的,des是multicast的。
但我接收程序始终没能接收到。另外mac数据是我自己的发送程序发送时候,用etherPeek抓的, 发送程序发送时,我可以用接收程序收到。但driver通过ioctrl发这个mac包,就收不到了:( 大家帮忙看看吧,freshman,困惑的说。 代码如下: pTestPacket = Adapter->pTestPacket;//自己在init里分配的 pTestTCB = Adapter->pTestTCB;//自己在init里分配的 NdisReinitializePacket(pTestPacket); //des mac add:01 00 5E 05 06 07 pTestTCB->Data[ 0] = 0x01; pTestTCB->Data[ 1] = 0x00; pTestTCB->Data[ 2] = 0x5E; pTestTCB->Data[ 3] = 0x05; pTestTCB->Data[ 4] = 0x06; pTestTCB->Data[ 5] = 0x07; //src mac add:00 0B CD 61 C5 0F pTestTCB->Data[ 6] = 0x00; pTestTCB->Data[ 7] = 0x0B; pTestTCB->Data[ 8] = 0xCD; pTestTCB->Data[ 9] = 0x61; pTestTCB->Data[10] = 0xC5; pTestTCB->Data[11] = 0x0F; //mac proto: 08 00 //IP pTestTCB->Data[12] = 0x08; pTestTCB->Data[13] = 0x00; ........ *((PTCB *)pTestPacket->MiniportReserved) = pTestTCB; NdisChainBufferAtBack(pTestPacket, pTestTCB->Buffer); NDIS_SET_PACKET_STATUS(pTestPacket, NDIS_STATUS_SUCCESS); NdisMIndicateReceivePacket( Adapter->AdapterHandle, &pTestPacket, 1); ![]() ![]() |
|
沙发#
发布于:2007-04-29 07:42
Adapter->AdapterHandle指向对吗? 数据包是否正确,不会被丢弃了,是否发送到网上了?
pTestTCB->Data[12] = 0x08??? 是0x08吗? 还是0x80? 注意网络字节顺序 |
|
|
板凳#
发布于:2007-04-29 12:03
回cyliu,Adapter->AdapterHandle = MiniportAdapterHandle;
这是在InitializeHandler里完成的,而且没有被改变过... 向上通知接收到数据时,PNDIS_PACKET,和NDIS_BUFFER的状态也事先check 了。NDIS_BUFFER的vritualaddress的确就是指向上述的data数组...,但length是 1514,觉得都OK。 user mode里监听这个multicast group,也用了该UDP port,recv()就是不响应... |
|
地板#
发布于:2007-05-04 13:30
目前发现一个现象,针对 unicast,一切OK,
但multicast就有问题! ![]() |
|