蓝牙驱动程序堆栈包括蓝牙协议Microsoft提供的支持的核心部分。 使用此堆栈,启用蓝牙的设备可以相互定位并建立连接。 在这些连接中,设备可以通过各种应用程序交换数据并相互交互。
下图显示了蓝牙驱动程序堆栈中的模块,以及 Windows Vista 及更高版本中不包含的自定义用户模式和内核模式驱动程序。 自定义驱动程序称为 特定配置驱动程序。
体系结构映像包括以下组件和示例:
用户模式
用户模式应用程序: 用户模式应用程序 通过已发布的 API 访问蓝牙驱动程序堆栈。 有关详细信息,请参阅 Windows SDK 文档中 的“关于蓝牙 ”。
用户模式应用程序应链接到 BthProps.lib,而不是 IrProps.lib,以使用 BluetoothSetLocalServiceInfo 等 API。
配置文件驱动程序示例
WAP 内核模式驱动程序:无线应用协议(WAP)组件是协议驱动程序的一个示例,该驱动程序在 Windows 网络堆栈和 BthPort 之间进行通信。 它访问 L2CAP 接口,并选择性地访问 L2CAP 中包含的服务发现协议(SDP)接口。 其他可能的配置文件包括高级音频分发配置文件(A2DP)、A/V 远程控制配置文件(AVRCP)、通用 A/V 分发配置文件(GAVDP)和通用 ISDN 访问(CIP)配置文件。
音频内核模式驱动程序:在 Windows 音频堆栈和 BthPort 之间通信的配置文件驱动程序示例,该驱动程序访问 BthPort 中包含的 SCO 接口。 可能的配置文件包括免手配置文件(HFP)、耳机配置文件(HSP)、无绳电话配置文件(CTP)和互通配置文件(ICP)。 从 Windows 8 开始,此配置文件驱动程序包含在 Windows 中。
蓝牙 LE 心率监视器配置文件:与蓝牙低能 (LE) API 通信的蓝牙 LE 配置文件驱动程序示例。
蓝牙驱动程序堆栈组件
IrProps:一个组件,用于与为蓝牙驱动程序堆栈第一版创建的配置文件驱动程序实现向后兼容。 IrProps 仅用于向后兼容性。 对于新开发,请使用 BthProps 组件。
BthProps:包含蓝牙用户界面的实现以及用户模式应用程序访问的蓝牙 API 的实现的组件。 此组件通过远程过程调用 (RPC) 将查询发送到 BthServ。 此外,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 以类似于 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 服务。 Windows 为 HID 服务创建 PDO,使 PnP 管理器加载 HidBth。
注释
BthEnum 不会为 Bth.inf INF 文件中指定的 UnsupportedServices 注册表项中显示的服务创建 PDO。
BthLEEnum:蓝牙低能(LE)总线驱动程序。 BthLEEnum 实现 ATT 协议和 GATT 规范。 此驱动程序还负责创建 PDO 来表示远程设备及其主要服务。
BthPort:由 BthUsb 微型端口加载的微型驱动程序。 BthPort 提供四个组件:
HCI 组件通过蓝牙规范中定义的主机控制器接口(HCI)与启用了蓝牙的本地无线电通信。 由于所有已启用蓝牙的无线电都实现了 HCI 规范,因此 BthPort 能够与任何已启用蓝牙的无线电通信,而不考虑制造商或型号。
SCO 组件实现同步 Connection-Oriented (SCO) 协议。 此协议支持创建到远程设备的点到点连接。 SCO 客户端通过 生成和发送 蓝牙请求块(BRB)来与 SCO 接口通信。
L2CAP 实现蓝牙逻辑链接控制和适应协议。 此协议支持创建远程设备的无丢失通道。 L2CAP 客户端通过生成和发送 BRB 来与 L2CAP 接口通信。
SDP 实现蓝牙服务发现协议。
BthUsb.sys:将总线接口从 BthPort 中抽象出来的微型端口。