C中的蓝牙MAC地址

时间:2012-08-14 04:24:38

标签: c++ windows bluetooth

如何在Windows中找到蓝牙网络接口的MAC地址(硬件地址)?问题不在于找出地址,问题是要确定网络接口类型是否为蓝牙。

我尝试的两种方法都没有区分以太网卡和蓝牙(至少我没有看到区别) - GetAdaptersAddresses将蓝牙接口返回为IF_TYPE_ETHERNET_CSMACDWMI返回为{{ 1 {} AdapterTypeID(与WiFi相同,即使存在无线类型)。

我目前看到的唯一可能性是搜索名称或描述字符串中的文字“bluetooth”但这似乎不是正确的解决方案; - )

1 个答案:

答案 0 :(得分:0)

您可以使用BluetoothFindFirstRadioBluetoothFindNextRadioBluetoothGetRadioInfo。然后,适配器的本地MAC地址位于address的字段BLUETOOTH_RADIO_INFO中:

BLUETOOTH_FIND_RADIO_PARAMS btfrp;
btfrp.dwSize = sizeof(btfrp);
HANDLE hRadio;
HBLUETOOTH_RADIO_FIND hFind = BluetoothFindFirstRadio(&btfrp, &hRadio);

if(hFind == NULL)
{
    DWORD err = GetLastError();
    switch(err)
    {
    case ERROR_NO_MORE_ITEMS:
        // No bluetooth radio found
        break;
    default:
        // Error finding radios
    }

    return;
}
do
{
    BLUETOOTH_RADIO_INFO radioInfo;
    radioInfo.dwSize = sizeof(radioInfo);
    DWORD err = BluetoothGetRadioInfo(hRadio, &radioInfo);
    if(err != ERROR_SUCCESS)
    {
       // Error during BluetoothGetRadioInfo
        continue;
    }
    // The mac address is in radioInfo.address

}
while(BluetoothFindNextRadio(hFind, &hRadio));


BluetoothFindRadioClose(hFind);