birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1178回复:5

用PtReceivePacket接收包,mac地址前是什么

楼主#
更多 发布于:2003-10-24 22:11
??????????
用PtReceivePacket接收包,在mac地址之前有一大堆东东不知道是什么,并且有时候有200~300字节,有时候根本就没有显示mac地址及以后Why?怎样确定mac地址前有多少字节,或者有什么方法可以字节从mac地址开始输出。
我是先查询包,再用FirstBuffer指针输出的。
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-25 19:20
MAC地址前面会有东西?


[编辑 -  10/25/03 by  antspower]
放弃瘟草,现吃李草
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-26 11:12
用PtReceive我是用参数来取头信息的
现在在另外一张网卡上用PtReceivepacket
来接收包,但是打印出来的不是从mac开始的
其前面有不等字节的东西,代码简单处理如下
在PtReceivepacket里面加入了:
    UINT PhysicalBufferCount;
UINT BufferCount;
PNDIS_BUFFER  FirstBuffer;
UINT TotalPacketLength;
UINT HeaderSize;

    NdisQueryPacket(Packet
, &PhysicalBufferCount
, &BufferCount
, &FirstBuffer
, &TotalPacketLength
);
HeaderSize = NDIS_GET_PACKET_HEADER_SIZE(Packet);
DbgPrint(\"    HeaderSize: %u.\\n\", HeaderSize);
DbgPrint(\"    TotalPacketLenth: %u.\\n\",  TotalPacketLength);
for(i=0;i<TotalPacketLength;i=i+4)
{
 DbgPrint(\"%X %X %X %X\", *((UCHAR*)(FirstBuffer)+i),*((UCHAR*)(FirstBuffer)+i+1), \\
 *((UCHAR*)(FirstBuffer)+i+2), *((UCHAR*)(FirstBuffer)+i+3));
}
得到的结果如下:
HeaderSize: 14.
TotalPacketLenth: 1514.
0 0 0 0
20 0 C 0
0 0 0 0
0 28 19 FE
0 28 19 FE
EA 5 0 0
0 8 0 0
D3 11 0 0
0 0 0 0
0...
..一大堆0,一般为88字节
0 0 0 0
4 80 1 4
...
这些不固定的字节之后才是帧头和ip头内容
谢谢

[编辑 -  10/26/03 by  birdtomaster]

[编辑 -  10/26/03 by  birdtomaster]
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-26 11:52


[编辑 -  12/2/03 by  antspower]
放弃瘟草,现吃李草
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-10-26 15:56
PNDIS_BUFFER FirstBuffer;

其实是个MDL,像楼上说的那样,用NdisQueryBufferSafe,并copy到自己的buffer
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-27 21:25
谢谢两位,我已经可以输出用PtReceivePacket接收到的包的信息,但输出信息中也有是在PtReceive函数中输出的信息,也就是说两个函数都在用,只不过不是同时而已,请问正常否,可以用PtReceivePacket接收包的网卡也可以用PtReceive函数接收包吗?还是PtReceivePacket要调用PtReceive,谢谢!
游客

返回顶部