You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Win32应用中检测本地蓝牙适配器是否支持蓝牙低功耗(BLE)

解决方案

方案1:纯Win32 API检测(兼容性最优,支持Win7及以上,32位程序无兼容问题)

通过SetupAPI读取蓝牙适配器的内置功能属性实现检测,步骤如下:

  • 引入头文件 #include <setupapi.h>,链接库 setupapi.lib,引用蓝牙设备类GUID GUID_DEVINTERFACE_BLUETOOTH
  • 调用 SetupDiGetClassDevs 获取系统所有蓝牙适配器设备列表
  • 枚举每个适配器设备,调用 SetupDiGetDeviceProperty 读取 DEVPKEY_Bluetooth_Radio_SupportedFunctions 属性值
  • 检查返回的位掩码中是否包含 BTH_RADIO_SUPPORT_LE 标记,存在即表示支持BLE

示例代码片段:

DWORD supportedFunc = 0;
DEVPROPTYPE propType;
if (SetupDiGetDeviceProperty(hDevInfo, &devInfoData, &DEVPKEY_Bluetooth_Radio_SupportedFunctions, &propType, (PBYTE)&supportedFunc, sizeof(supportedFunc), NULL, 0)) {
    if (supportedFunc & BTH_RADIO_SUPPORT_LE) {
        // 设备支持BLE
    }
}

方案2:C++/WinRT API调用(无需担心32位兼容问题)

你顾虑的32位程序在64位系统调用UWP蓝牙API的问题不存在,微软所有公开的UWP蓝牙API均支持WOW64模式,32位程序可以正常在64位Win10/11系统上调用 Radio.GetRadiosAsync 和 BluetoothAdapter.GetRadioAsync,无需额外调整编译配置,只要确保系统最低版本要求为Windows 10 1703即可。

方案3:简易调用验证(代码量最少)

直接尝试调用BLE GATT相关的原生API进行可行性验证:调用 BluetoothGATTGetServices 时传入空句柄和空缓冲区,如果返回值不是 ERROR_NOT_SUPPORTED,即表示当前系统蓝牙适配器支持BLE功能。


内容的提问来源于stack exchange,提问作者Thomas T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:24:04