Greetings, I hear your frustration and I feel your pain. A few weeks ago, I was looking for the same thing. In the end, I decided to settle for the approach of using Win32 IPHlpAPI functions to pair the IP addresses and MAC addresses, and then used the IP address information from pcap_findalldevs() to pair up the MAC address returned from M$ to the adapter information returned from WinPcap... not the most elegant solution, but it works reliably.
SLH. > > Hello, > > I'm sorry to insist but I'm still looking for a solution to > retrieve the MAC > address using WinpCat lib. > I browsed the Winpcap source code and I found (Packet32.c) different > exemples of how to use the PacketRequest() method. > With the snapshop below, I can retrieve some information like > the "vendor > description" (OID_GEN_VENDOR_DESCRIPTION) but not the MAC > address (either > using CURRENT or PERMANENT OID). > I also found in the mailing list archive some emails exchanged on this > topic. > I tried to compile the "code" found in > http://www.mail-archive.com/[EMAIL PROTECTED]/ms > g00314.html > but I got an "undefined symbol": "prmacaddr" > I also found another code example (ViewNIC.zip) to retrieve > both the IP and > the MAC address but If I'm correct this tool uses SNMP to do that. > I'm just wondering if there is a way to get both the IP and the MAC > addresses on the local host using Winpcap using for instance > PacketRequest > or another method. I would appreciate if someone could help > me and/or send > me some code examples. > Thanks for your help, > Pierre. > > > BOOLEAN status; > ULONG > ioCtlBufferLength=(sizeof(PACKET_OID_DATA)+sizeof(ULONG)-1); > PPACKET_OID_DATA oidData; > > oidData=(PPACKET_OID_DATA)GlobalAllocPtr(GMEM_MOVEABLE | > GMEM_ZEROINIT, > 256); > > LPADAPTER lpAdapter = > PacketOpenAdapter((char*)(LPCSTR)localAdapters.GetAt(i)); > PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_ALL_LOCAL); > > //oidData->Oid = OID_802_3_CURRENT_ADDRESS; > oidData->Oid = OID_802_3_PERMANENT_ADDRESS; > oidData->Length = 256; > ZeroMemory(oidData->Data,256); > status = PacketRequest(lpAdapter,FALSE,oidData); > if(status==0 || ((char*)oidData->Data)[0]==0) > { > AfxMessageBox("Cannot retrieve the MAC Address"); > } > else > { > AfxMessageBox((char*)(oidData->Data)); > } > > > > > ================================================================== > This is the WinPcap users list. It is archived at > http://www.mail-archive.com/[EMAIL PROTECTED]/ > > To unsubscribe use > mailto: [EMAIL PROTECTED] > ================================================================== > ================================================================= This is the WinPcap users list. It is archived at http://www.mail-archive.com/[EMAIL PROTECTED]/ To unsubscribe use mailto: [EMAIL PROTECTED] =================================================================
