阅读:1166回复:3
又是关于ptreceive的问题
我在ptreceive的开头部分加入了以下一段代码,想把目的MAC地址通过DbgPrint显示出来,但是通过dbgview发现显示出来的不是网卡的MAC地址,我的两台机子是通过网卡连接起来的并设置了ADSL Internet 连接共享。请问是什么原因啊?
HighestAcceptableAddress.LowPart = -1; HighestAcceptableAddress.HighPart = -1; Status = NdisAllocateMemory(&pPacketContent, 14, 0, HighestAcceptableAddress); if (Status!=NDIS_STATUS_SUCCESS) { DbgPrint(\"allocate failure!\\n\"); return NDIS_STATUS_NOT_ACCEPTED; } if(pPacketContent == NULL) { DbgPrint(\"prreceive:pPacketContent == NULL\\n\"); return NDIS_STATUS_NOT_ACCEPTED; } NdisZeroMemory(pPacketContent, HeaderBufferSize); NdisMoveMemory(pPacketContent,HeaderBuffer,HeaderBufferSize); p=(EPACKET*)pPacketContent; DbgPrint(\"MAC:%u\\n\",p->targ_hw_addr); NdisFreeMemory(pPacketContent,HeaderBufferSize,0); |
|
沙发#
发布于:2003-05-20 17:12
请大家帮帮我啊!
headerbuffer的14个字节中的前12个字节应该就是原和目的MAC地址 啊,那为什么我强制类型转换后显示出来的与实际的MAC地址不符呢? |
|
板凳#
发布于:2003-05-21 08:12
这是我的方法
在Passthru.h里定义 /*―――――――――――――――――――――――――――――――――――――― EtherHead结构 */ typedef struct _EtherHead { // Ethernet UCHAR DestEther[6]; // 目的地址,6字节。 UCHAR SourEther[6]; // 源地址,6字节。 USHORT ServType; } *pEtherHead; 再在PtReceive里加入 pEtherHead pEthHead=(pEtherHead)HeaderBuffer; DbgPrint(\" DestEther:\\n\"); for(i=0;i<6;i++) { DbgPrint(\" %d\\n\",(pEthHead->DestEther)); } DbgPrint(\" SourEther:\\n\"); for(i=0;i<4;i++) { DbgPrint(\" %d\\n\",(pEthHead->SourEther)); } 你试一下行不行? [编辑 - 5/21/03 by Zhou533] |
|
|
地板#
发布于:2003-05-22 09:15
你可以先dbgprint HeaderBuffer的内容看看。可能是你的类型转换有问题!
|
|