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

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

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

    用户模式应用程序应链接到 BthProps.lib 而不是 IrProps.lib ,以便使用 蓝牙SetLocalServiceInfo 等 API。

  • 配置文件驱动程序的示例

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

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

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

  • 蓝牙驱动程序堆栈组件

  • IrProps - 一个组件,用于为第一个版本的蓝牙驱动程序堆栈创建的配置文件驱动程序实现向后兼容性。 提供 IrProps 仅用于向后兼容。 使用 BthProps 组件进行新开发。

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

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

  • BthCi - 蓝牙类安装程序。

  • WshBth - 蓝牙 Windows 套接字帮助程序组件。 Windows 套接字层调用 WshBth 来执行套接字操作。 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 与 USB HID 模块一样连接到 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 端口。

  • 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 接口通信, (BRB) 。
  • L2CAP 实现蓝牙逻辑链接控制和适配协议。 此协议支持创建到远程设备的无损通道。 L2CAP 客户端通过生成蓝牙请求块并发送蓝牙请求块来与 L2CAP 接口通信, (BRB) 。
  • SDP 实现蓝牙服务发现协议。
  • BthUsb.sys - 从 BthPort 提取总线接口的微型端口。

  •