阅读:1727回复:8
请问在passthru的PtReceive里的HeaderBuffer中怎样拿到MAC addr
听说是可以拿到的,找不到类似的帖子
或者有其他方法在PtReceive里面拿到source的MAC addr |
|
沙发#
发布于:2003-12-29 08:52
headbuffer一般就是14个字节,直接读他就可以了,他就是以太桢头
|
|
|
板凳#
发布于:2003-12-29 14:41
怎么有人说是除MAC头(14BYTE)外的的IP头和数据?到底哪个说法对?
|
|
|
地板#
发布于:2003-12-29 17:02
怎么有人说是除MAC头(14BYTE)外的的IP头和数据?到底哪个说法对? 谁说的headbuffer里面有ip头?老出去毙了。 |
|
|
地下室#
发布于:2003-12-29 17:05
好,毙了
|
|
|
5楼#
发布于:2003-12-29 18:21
headbuffer一般就是14个字节,直接读他就可以了,他就是以太桢头 多谢,就是说我用((char *)HeaderBuffer)[X] 的格式就可以拿出来咯? [编辑 - 12/29/03 by hoyizo] |
|
6楼#
发布于:2003-12-30 13:17
我用
DbgPrint(\" HeaderBuffer: %u\\n\", HeaderBuffer); DbgPrint(\" HeaderBufferSize: %u\\n\", HeaderBufferSize); 打印,再drivermonitor里面看到的却是类似 -17.475 Default HeaderBuffer: 4286049008 -17.475 Default HeaderBufferSize: 14 的东东, 这里打印出来的应该是pointer本身,但是如果我要拿出pointer所指的内容要怎么办?PVOID定义的pointer要怎么样用? 我用 (char *)HeaderBuffer 强行改格式,结果蓝屏。请老大们告知正确只用方法 [编辑 - 12/30/03 by hoyizo] |
|
7楼#
发布于:2003-12-30 17:39
u can do like this:
#pragma pack(push, 1) typedef struct _ETH_HEADER { unsigned char targ_hw_addr[6]; // 目的地址,6字节。 unsigned char src_hw_addr[6]; // 源地址,6字节。 unsigned char H_frame_type; // 0x0800 for IP data, 0x806 for ARP, 0x8035 for RARP unsigned char L_frame_type; } ETHERNET_HEADER, *PETHERNET_HEADER; #pragma pack(pop) PETHERNET_HEADER pEth = (PETHERNET_HEADER)HeaderBuffer; pEh->... |
|
8楼#
发布于:2003-12-30 20:19
谢谢arthurtu老大
我刚刚在以前的帖子里找到类似于你提供的解决方法了,问题现在已经解决 |
|