wmj52013
驱动牛犊
驱动牛犊
  • 注册日期2012-03-02
  • 最后登录2012-03-31
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1841回复:5

passthru中PtReceive收到的数据包全是向外的广播包

楼主#
更多 发布于:2012-03-14 20:00
RT
对passthru中PtReceive所作的改动仅是添加了一个PacketCapture函数,其原型为
NDIS_STATUS
PacketCapture(PNDIS_PACKET packet)
{
   NDIS_STATUS status ;
   PNDIS_BUFFER NdisBuffer ;
   UINT  copysize = 0 , DataOffset = 0 ,i=0;
   PUCHAR mybuffer = NULL ,tembuffer = NULL ;  
//假设这个是在PtReceive等函数中得到的PACKET
   NdisBuffer = packet->Private.Head ;     //取得第一个BUFFER
   status =  NdisAllocateMemoryWithTag(&mybuffer, 2048, TAG);  //分配内存块
   if( status != NDIS_STATUS_SUCCESS )
       return NDIS_STATUS_FAILURE ;
   NdisZeroMemory( mybuffer, 2048 ) ;
   NdisQueryBufferSafe(  //取得NDIS_BUFFER描述符中数据的首地址和大小
                                NdisBuffer,
                                &tembuffer,
                                &copysize,
                                NormalPagePriority
        ) ;
        //将数据复制到内存中
   NdisMoveMemory(mybuffer, tembuffer, copysize) ;
   DataOffset = copysize ;
   while(1)
   {      
    NdisGetNextBuffer(NdisBuffer , &NdisBuffer ) ;   //获得下一个NDIS_BUFFER的的指针
    if( NdisBuffer == NULL )                         //如果指针是NULL那么表示到链表尾了
        break ;
    NdisQueryBufferSafe(
                                NdisBuffer,
                                &tembuffer,
                                &copysize,
                                NormalPagePriority
                                ) ;
    NdisMoveMemory( mybuffer + DataOffset , tembuffer, copysize) ;
    DataOffset += copysize  ;
   }
   for(i=1;i<=DataOffset;i++)
   {
    if(mybuffer[i-1]<16)
          DBGPRINT(("0"));
    DBGPRINT(("%x ",mybuffer[i-1]));
    if(i%8==0)
          DBGPRINT(("  "));
    if(i%16==0)
          DBGPRINT(("\n"));
   }
   NdisFreeMemory(mybuffer, 2048, 0);
   return NDIS_STATUS_SUCCESS;
}
在vmware下的windowsxp中用driverstudio捕捉到的数据包均是目的地址全为1的广播包
有大牛知道这是为什么吗?
login20
驱动牛犊
驱动牛犊
  • 注册日期2010-05-28
  • 最后登录2012-03-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-03-15 22:09
我也跟你一样啊!  都到这步了。真希望有高手来帮助一下啊。。。
wmj52013
驱动牛犊
驱动牛犊
  • 注册日期2012-03-02
  • 最后登录2012-03-31
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-03-16 11:53
回 login20 的帖子
login20:我也跟你一样啊!  都到这步了。真希望有高手来帮助一下啊。。。 (2012-03-15 22:09)

坐等大牛啊
wmj52013
驱动牛犊
驱动牛犊
  • 注册日期2012-03-02
  • 最后登录2012-03-31
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2012-03-17 10:59
还没人来解答啊   还是说就我和2楼弄错了什么啊   自己顶一个先  接着等!
chaehom
驱动牛犊
驱动牛犊
  • 注册日期2012-02-10
  • 最后登录2012-05-14
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2012-03-18 17:49
                             
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
5楼#
发布于:2012-03-27 18:39
抓PtReceivePacket例程的包
走走看看开源好 Solaris vs Linux
游客

返回顶部