cwindowsnetwork-programmingvmwarenic

Differentiate VMware network adapter from physical network adapters -or- Detect Virtual Network Adaptor


I have to differentiate between the real addresses and the VM addresses using any Windows API. I'm using GetAdaptersAddresses API to populate a list of IP addresses for the local machine. I need to extract only the "real" addresses apart from the addresses associated with the VMware network adapter and other addresses (auto-configuration and tunnel adapter addresses). I've not been able to find any API or any flag to differentiate this. Is there any way this can be done?

PS: The IfType flag in the IP_ADAPTER_ADDRESSES structure returned by GetAdaptersAddresses doesn't help me differentiate between VMware addresses and the real addresses.


Solution

  • The beginning (first 3 segments) of the mac address shows if a interface is virtual:

    "00:05:69"; //vmware1
    "00:0C:29"; //vmware2
    "00:50:56"; //vmware3
    "00:1C:42"; //parallels1
    "00:03:FF"; //microsoft virtual pc
    "00:0F:4B"; //virtual iron 4
    "00:16:3E"; //red hat xen , oracle vm , xen source, novell xen
    "08:00:27"; //virtualbox
    

    EDIT
    To be more clear, if a interface has a MAC address that starts with any of the above given strings, then it's virtual.