| 
			 
					阅读:1275回复: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的内容看看。可能是你的类型转换有问题!				 
							 | 
	|