wollok
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2012-07-18
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望335点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
阅读:1141回复:1

请教大家一个关于NdisMIndicateReceivePacket的问题

楼主#
更多 发布于:2007-08-11 20:41
我写的是一个虚拟网卡驱动
代码是这样的
//    分配一个封包
NdisAllocatePacket(&Status,&Packet,Adapter->RecvPacketPoolHandle);
//    分配缓冲区
NdisAllocateMemoryWithTag(&lpBuffer,InLen,NIC_TAG);
NdisMoveMemory(lpBuffer,SysBuffer,InLen);
//    分配缓冲区描述符
NdisAllocateBuffer(&Status,&lpNDISBuffer,Adapter->RecvBufferPoolHandle,lpBuffer,InLen);
//    加入到封包中
NdisChainBufferAtFront(Packet,lpNDISBuffer);        //    把数据加到缓冲区里面
NDIS_SET_PACKET_STATUS(Packet, NDIS_STATUS_SUCCESS);
KeInsertQueueDpc(&RecvDPC,Adapter->AdapterHandle,Packet);


VOID RecvDPCProc(PKDPC Dpc,PVOID DeferredContext,NDIS_HANDLE AdapterHandle,PNDIS_PACKET Packet)
{
        NdisMIndicateReceivePacket(AdapterHandle,&Packet,1);    //    通知上层接收数据包
}

然后在ReturnPacketHandler中对包进行回收

在这里用Sniffer软件能看到这个包。一切看起来都很正常,就是系统不处理这个包。不知道为啥。还请大家赐教。
wollok
驱动小牛
驱动小牛
  • 注册日期2002-11-12
  • 最后登录2012-07-18
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望335点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-11 21:18
补充一点,发的数据包是ARP请求,也就是请求这个虚拟网卡的IP地址对应的MAC。
理论上是系统是应该有一个ARP回复的。可是却没有任何反映。
游客

返回顶部