蓝牙和 WM_DEVICECHANGE 消息
蓝牙包含特定的 WM_DEVICECHANGE 消息,使开发人员能够在蓝牙设备发生状态变化时获取消息。 本主题介绍如何接收蓝牙特定的 WM_DEVICECHANGE 消息并列出蓝牙特定的消息。
接收特定于蓝牙 WM_DEVICECHANGE 消息
要接收 WM_DEVICECHANGE 消息,必须首先打开本地无线电的句柄。 为此,可使用以下方法之一:
- 使用带有以下参数的 SetupDiGetClassDevs 函数:(GUID_BTHPORT_DEVICE_INTERFACE, …, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE),然后使用 SetupDiEnumDeviceInterfaces、SetupDiGetDeviceInterfaceDetail、CreateFile 和 SetupDiDestroyDeviceInfoList 函数。
- 使用 BluetoothFindFirstRadio、BluetoothFindNextRadio 和 BluetoothFindRadioClose 函数。
打开蓝牙无线电句柄后,调用 RegisterDeviceNotification 函数,并使用 DBT_DEVTYP_HANDLE 作为 devicetype 在句柄上注册通知。 注册后将发送以下 GUID,DEV_BROADCAST_HANDLE::dbch_data 成员是关联的缓冲区。
特定于蓝牙的消息
下表列出了特定于蓝牙的 WM_DEVICECHANGE 消息。
GUID | BUFFER | 说明 |
---|---|---|
GUID_BLUETOOTH_HCI_EVENT | BTH_HCI_EVENT_INFO | 当远程蓝牙设备在 ACL 级别连接或断开连接时,将发送此消息。 |
GUID_BLUETOOTH_L2CAP_EVENT | BTH_L2CAP_EVENT_INFO | 当本地无线电与远程蓝牙设备之间的 L2CAP 通道建立或终止时,将发送此消息。 对于多路复用的 L2CAP 通道(如 RFCOMM),只有在建立基础通道时才会发送此消息,而不是在建立或终止每个多路复用通道(如 RFCOMM 通道)时。 |
GUID_BLUETOOTH_PIN_REQUEST | 不适用。 | 应用程序应忽略此消息。 如果应用程序必须接收 PIN 请求,则应使用 BluetoothRegisterForAuthentication 函数。 |
GUID_BLUETOOTH_RADIO_IN_RANGE | BTH_RADIO_IN_RANGE | 当远程蓝牙设备的以下任何属性发生变化时,就会发送此消息:设备已发现、设备类别、名称、连接状态或设备已记住状态。 当这些属性被设置或清除时,也会发送此消息。 |
GUID_BLUETOOTH_RADIO_OUT_OF_RANGE | BLUETOOTH_ADDRESS | 当最后一次查询完成后仍未找到先前发现的设备时,将发送此消息。 对于已记住的设备,将不会发送此消息。 BTH_ADDRESS 结构是未找到的设备地址。 |
相关主题