基本上

#include <Windows.h>
#include <Iphlpapi.h>
#include <Assert.h>
#include <iostream>
#pragma comment(lib, "libiphlpapi.lib")
using namespace std;
// Prints the MAC address stored in a 6 byte array to stdout
static void PrintMACaddress(unsigned char MACData[])
{
    printf("MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n\n", 
    MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
}

// Fetches the MAC address and prints it
static void GetMACaddress(void)
{
    // Allocate information for up to 16 NICs
    IP_ADAPTER_INFO AdapterInfo[16];
    // Save the memory size of buffer
    DWORD dwBufLen = sizeof(AdapterInfo);

    // Call GetAdapterInfo
    // [out] buffer to receive data
    // [in] size of receive data buffer
    DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);
    // Verify return value is valid, no buffer overflow
    assert(dwStatus == ERROR_SUCCESS);
    // Contains pointer to current adapter info
    PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;

    do {
        cout << pAdapterInfo->Description << endl;
        
        PrintMACaddress(pAdapterInfo->Address);

        // Progress through linked list
        pAdapterInfo = pAdapterInfo->Next;
    }while(pAdapterInfo);	 // Terminate if last adapter
}

int main(int argc, char* argv[])
{
    GetMACaddress();	 // Obtain MAC address of adapters
    system("pause");
    return 0;
}

就是這樣

可自行查詢MSDN關於PIP_ADAPTER_INFO

可以依此類推