蓝牙驱动程序堆栈

蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 使用此堆栈,启用蓝牙的设备可以相互定位并建立连接。 在此类连接中,设备可以通过各种应用程序交换数据并相互交互。

下图显示了蓝牙驱动程序堆栈中的模块,以及Windows Vista 及更高版本中不包含的可能自定义用户模式和内核模式驱动程序。 这些自定义驱动程序称为配置文件驱动程序。

diagram illustrating the bluetooth driver stack.

  • 用户模式

    • 用户模式应用程序 - 通过已发布的 API 访问蓝牙驱动程序堆栈的用户模式应用程序。 有关详细信息,请参阅 Windows SDK 文档中的“关于蓝牙”。

      注意 用户模式应用程序应链接到 BthProps.lib 而不是 IrProps.lib,以便使用 API(如 BluetoothSetLocalServiceInfo)。

  • 配置文件驱动程序示例

    • WAP 内核模式驱动程序 - 无线应用程序协议 (WAP) 组件是配置文件驱动程序的一个示例,该驱动程序在Windows网络堆栈和 BthPort 之间通信,访问 L2CAP 接口(可选)包含在 L2CAP 中的 SDP 接口。 其他可能的配置文件包括高级音频分发配置文件 (A2DP) 、A/V 远程控制配置文件 (AVRCP) 、通用 A/V 分发配置文件 (GAVDP) ,以及常见的 ISDN 访问 (CIP) 配置文件。

    • 音频内核模式驱动程序 - 配置文件驱动程序的示例,该驱动程序在Windows音频堆栈和 BthPort 之间通信,访问后者中包含的 SCO 接口。 可能的配置文件包括免费手机配置文件 (HFP) 、头戴显示设备配置文件 (HSP) 、无绳电话配置文件 (CTP) ,以及 ICP () 的互通配置文件。 注意从Windows 8开始,此配置文件驱动程序包含在Windows中。

    • 蓝牙 LE 心率监视器配置文件 - 与蓝牙低能 (LE) API 通信的蓝牙 LE 配置文件驱动程序的示例。

  • 蓝牙驱动程序堆栈组件

    • IrProps - 一个组件,用于向后兼容为蓝牙驱动程序堆栈的第一个版本创建的配置文件驱动程序。

      NoteIrProps 仅用于向后兼容性。 使用 BthProps 组件进行新开发。

    • BthProps - 包含蓝牙用户界面的实现以及用户模式应用程序访问蓝牙 API 的实现的组件。 此组件通过远程过程调用向 BthServ 发送查询, (RPC) 。 此外,BthProps 通过专用 IOCTL 与 BthPort 执行引脚交换。 请注意,BthProps 在启用了蓝牙无线电的任何系统上运行。

    • BthServ - 负责将查询数据缓存和转发到 Bthport 的服务。

    • BthCi - 蓝牙类安装程序。

    • WshBth - 蓝牙 Windows套接字帮助程序组件。 wshBth 由Windows套接字层调用,以执行套接字操作。 WshBth 主要通过 TDI 接口调用 RfComm。 WshBth 还呼吁 BthServ 执行远程设备查询,并调用 BthPort 执行本地无线电查询。

    • FSquirt - 一个不可扩展的对象Exchange (OBEX) 组件,允许用户跨打开的蓝牙连接发送和接收文件。 OBEX 通过使用 WshBth 组件的 RFCOMM 与远程设备通信。

    • BthPrint - 实现硬复制电缆更换配置文件的组件 (HCRP) 。 此组件允许打印系统向启用蓝牙打印机发送和接收数据。 BthPrint 与 BthPort 中的 SDP 接口通信,以查询远程打印机和 BthPort 中的 L2CAP 接口以发送和接收数据。

    • HidBth - 实现人机接口设备 (HID) 配置文件的组件。 HidBth 还与 BthPort 中的 L2CAP 和 SDP 接口通信。 HidBth 连接到 HID 堆栈与 USB HID 模块非常类似。

    • BthPan - 实现个人区域网络 (PAN) 配置文件的组件,提供跨开放蓝牙连接的 TCP 连接。 在 Windows Vista 和 Windows XP 中,BthPan 仅支持传出连接。 BthPan 也是 BthPort 组件的客户端,同时使用 L2CAP 和 SDP 接口。

    • RfComm - 实现蓝牙串行电缆仿真协议的组件。 RfComm 还使用 BthPort 中找到的 L2CAP 和 SDP 接口。 RfComm 的上边缘公开 TDI 接口,允许此组件显示为网络传输。 这就是 WshBth 连接到蓝牙以从用户模式 API 发送和接收数据的方式。

      用户模式应用程序可以使用 Windows SDK 中所述的 Winsock 接口访问 RfComm。

    • BthModem - 实现虚拟 COM 端口和拨号网络 (DUN) 的组件。 BthModem 通过 TDI 接口将所有 I/O 和控制操作定向到 RfComm。 BthModem 的上边缘与 Serial.sys 通信,使外观成为无线 COM 端口。 注意此组件在Windows RT中不可用。

    • BthEnum - 蓝牙总线驱动程序。 BthEnum 与 即插即用 (PnP) 管理器通信,以创建和销毁用于启用蓝牙服务的设备对象。 BthEnum 为连接的远程设备支持的每个服务创建 PDO。 例如,当用户连接启用了蓝牙的鼠标时,Windows将发现鼠标支持蓝牙 HID 服务,并为 HID 服务创建 PDO,使 PnP 管理器加载 HidBth。

      注意BthEnum 不会为在 Bth.inf 中指定的 UnsupportedServices 注册表项中显示的服务创建 PDO。

    • BthLEEnum- 蓝牙低能 (LE) 公共汽车司机。 BthLEEnum 实现 ATT 协议和 GATT 配置文件。 它还负责创建 PDO 来表示远程设备及其主要服务。

    • BthPort - 由 BthUsb 微型端口加载的微型驱动程序。 BthPort 提供四个组件:

      • HCI 组件通过蓝牙规范中定义的主机控制器接口 (HCI) 与启用了本地蓝牙的无线电通信。 由于所有启用了蓝牙的无线电都实现了 HCI 规范,因此无论制造商或型号如何,BthPort 都可以与任何已启用蓝牙的无线电通信。
      • SCO 组件实现同步Connection-Oriented (SCO) 协议。 此协议支持创建与远程设备的点到点连接。 SCO 客户端通过生成和发送 蓝牙 请求块来与 SCO 接口通信, (BR) 。
      • L2CAP 实现蓝牙逻辑链接控制和适应协议。 此协议支持创建远程设备的无损失通道。 L2CAP 客户端通过生成和发送蓝牙请求块来与 L2CAP 接口通信, (BR) 。
      • SDP 实现蓝牙服务发现协议。
    • BthUsb.sys- 从 BthPort 抽象总线接口的微型端口。