happyguoguo
驱动牛犊
驱动牛犊
  • 注册日期2005-12-13
  • 最后登录2010-07-15
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1203回复:3

一个使用miniport driver向上发送数据的问题,大哥大姐们帮忙看看?

楼主#
更多 发布于:2007-04-28 18:00
  我最近想改一下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);
   
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2007-04-29 07:42
Adapter->AdapterHandle指向对吗? 数据包是否正确,不会被丢弃了,是否发送到网上了?

pTestTCB->Data[12] = 0x08??? 是0x08吗? 还是0x80? 注意网络字节顺序
走走看看开源好 Solaris vs Linux
happyguoguo
驱动牛犊
驱动牛犊
  • 注册日期2005-12-13
  • 最后登录2010-07-15
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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()就是不响应...
happyguoguo
驱动牛犊
驱动牛犊
  • 注册日期2005-12-13
  • 最后登录2010-07-15
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-04 13:30
目前发现一个现象,针对 unicast,一切OK,
但multicast就有问题!
游客

返回顶部