zhaoxf007
驱动牛犊
驱动牛犊
  • 注册日期2004-08-04
  • 最后登录2010-08-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1184回复:1

2000 DDK的Packet例程性能问题请教!!

楼主#
更多 发布于:2005-03-16 20:44
各位大侠:
    小弟我打算用2000 DDK的Packet例子做东西,先做了个试验,别的什么都没改,就在PacketReceiveIndicate函数前面加上一句return,直接返回了,这样来测试一下Packet的抓包速度,然后用TestApp把Filter设为Directed,全速拷贝文件,然后用DbgView看输出,平均PacketReceiveIndicate每秒收600多个报文,然后设置到混杂模式,每秒收900多个报文,可是我用Sniffer,人家每秒可是1500多没问题啊,我还什么操作没加呢,各位发表一下高见啊!
zhaoxf007
驱动牛犊
驱动牛犊
  • 注册日期2004-08-04
  • 最后登录2010-08-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-16 20:49
代码如下
NDIS_STATUS
PacketReceiveIndicate (
    IN NDIS_HANDLE ProtocolBindingContext,
    IN NDIS_HANDLE MacReceiveContext,
    IN PVOID       HeaderBuffer,
    IN UINT        HeaderBufferSize,
    IN PVOID       LookAheadBuffer,
    IN UINT        LookaheadBufferSize,
    IN UINT        PacketSize
    )
/*++

Routine Description:

    PacketReceiveIndicate is called with a pointer to a
    lookahead buffer. If this buffer contains less than
    the full, received network packet, it
    calls NdisTransferData with a protocol-allocated packet
    descriptor specifying protocol-allocated buffer(s) to obtain
    the remainder of the received packet.

Arguments:


Return Value:


--*/
{
    POPEN_INSTANCE      open;
    PIO_STACK_LOCATION  irpSp;
    PIRP                irp;
    PLIST_ENTRY         packetListEntry;
    PNDIS_PACKET        pPacket;
    ULONG               sizeToTransfer;
    NDIS_STATUS         status;
    UINT                bytesTransfered = 0;
    ULONG               bufferLength;
    PPACKET_RESERVED    reserved;
    PMDL                pMdl;

    DebugPrint((\"ReceiveIndicate\\n\"));
    return NDIS_STATUS_SUCCESS;
    //后面原来的代码...
}
然后我在DbgView看输出字串“ReceiveIndicate”,Directed模式每秒就600多个,这可不行啊!各位大侠给个意见奥!
游客

返回顶部