2

WindowsでBluetoothネットワークインターフェイスのMACアドレス(ハードウェアアドレス)を見つけるにはどうすればよいですか?問題はアドレスを見つけることではなく、ネットワークインターフェースのタイプがBluetoothであるかどうかを識別することです。

私が試した両方のアプローチは、イーサネットカードとBluetoothを区別しません(少なくとも違いはわかりません)-現在のGetAdaptersAddressesBluetoothインターフェイスを返します(ワイヤレスタイプは存在しますが、WiFiと同じIF_TYPE_ETHERNET_CSMACDですWMIAdapterTypeIDEthernet 802.3

私が現在見ている唯一の可能性は、名前または説明文字列でテキスト「bluetooth」を検索することですが、これは問題のない解決策とは思えません;-)

4

1 に答える 1

1

BluetoothFindFirstRadioBluetoothFindNextRadioおよびを使用できますBluetoothGetRadioInfo。アダプタのローカル 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);
于 2014-12-03T15:04:52.677 に答える