阅读:1141回复:1
请教大家一个关于NdisMIndicateReceivePacket的问题
我写的是一个虚拟网卡驱动
代码是这样的 // 分配一个封包 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软件能看到这个包。一切看起来都很正常,就是系统不处理这个包。不知道为啥。还请大家赐教。 |
|
沙发#
发布于:2007-08-11 21:18
补充一点,发的数据包是ARP请求,也就是请求这个虚拟网卡的IP地址对应的MAC。
理论上是系统是应该有一个ARP回复的。可是却没有任何反映。 |
|