蓝牙和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 作为设备类型注册句柄上的通知。 注册后,将发送以下 GUID,DEV_BROADCAST_HANDLE::dbch_data 成员是关联的缓冲区。
特定于蓝牙的消息
下表列出了特定于蓝牙的 WM_DEVICECHANGE 消息。
GUID | 缓冲区 | 描述 |
---|---|---|
GUID_BLUETOOTH_HCI_EVENT | BTH_HCI_EVENT_INFO | 当远程蓝牙设备在 ACL 级别连接或断开连接时,将发送此消息。 |
GUID_BLUETOOTH_L2CAP_EVENT | BTH_L2CAP_EVENT_INFO | 当本地无线电与远程蓝牙设备之间的 L2CAP 通道已建立或终止时,将发送此消息。 对于多路复用器(如 RFCOMM)的 L2CAP 通道,仅在建立基础通道时发送此消息,而不是在建立或终止每个多路复用通道(如 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 结构是找不到的设备地址。 |
相关主题