阅读:1178回复:5
用PtReceivePacket接收包,mac地址前是什么
??????????
用PtReceivePacket接收包,在mac地址之前有一大堆东东不知道是什么,并且有时候有200~300字节,有时候根本就没有显示mac地址及以后Why?怎样确定mac地址前有多少字节,或者有什么方法可以字节从mac地址开始输出。 我是先查询包,再用FirstBuffer指针输出的。 |
|
沙发#
发布于:2003-10-25 19:20
MAC地址前面会有东西?
[编辑 - 10/25/03 by antspower] |
|
|
板凳#
发布于: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] |
|
地板#
发布于:2003-10-26 11:52
[编辑 - 12/2/03 by antspower] |
|
|
地下室#
发布于:2003-10-26 15:56
PNDIS_BUFFER FirstBuffer;
其实是个MDL,像楼上说的那样,用NdisQueryBufferSafe,并copy到自己的buffer |
|
5楼#
发布于:2003-10-27 21:25
谢谢两位,我已经可以输出用PtReceivePacket接收到的包的信息,但输出信息中也有是在PtReceive函数中输出的信息,也就是说两个函数都在用,只不过不是同时而已,请问正常否,可以用PtReceivePacket接收包的网卡也可以用PtReceive函数接收包吗?还是PtReceivePacket要调用PtReceive,谢谢!
|
|