Windows 蓝牙驱动开发-蓝牙设备栈

蓝牙设备栈

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

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

用户模式

用户模式应用程序:通过已发布的 API 访问蓝牙驱动程序堆栈的用户模式应用程序。 

用户模式应用程序应链接到 BthProps.lib 而非 IrProps.lib,以便使用 BluetoothSetLocalServiceInfo 等 API。

配置文件驱动程序示例

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

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

蓝牙 LE 心率监视器配置文件 - 与蓝牙低功耗 (BLE) 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:一个不可扩展的对象交换 (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 端口的外观。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2863.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

港科夜闻 | 香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作。根据备忘录,双方将结合各自于科研领域的优势,携手推动医学健康领域的交流与合作。合作方向将涵盖人才培训、…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处:动态切换算法或行为场景:实现同一功能用到不同的算法时和简单工厂对比:简单工厂是通过参数创建对象,调用同一个方法(实现细节不同);策略模式是上下文切换对象,调用…

Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比

先说结论: Swgger 3.0 与Swagger 2.0 区别很大,Swagger3.0用了最新的注释实现更强大的功能,同时使得代码更优雅。 就个人而言,如果新项目推荐使用Swgger 3.0,对于工具而言新的一定比旧的好;对接于旧项目原…

3 前端(上): Web开发相关概念 、HTML语法、CSS语法

文章目录 前言:导学1 Web开发相关概念2 Web标准(网页标准)3 软件架构(CS/BS)(1)C/S: Client/Server 客户端 / 服务器端(2)B/S: Browser/Server 浏览器 / 服务器端VSCode配置前段开发环境一、HTML概念1 概念2 HTML快速入门(1)语法快速入门(2)VSCode一个 !(快捷键…

目标检测新视野 | YOLO、SSD与Faster R-CNN三大目标检测模型深度对比分析

目录 引言 YOLO系列 网络结构 多尺度检测 损失函数 关键特性 SSD 锚框设计 损失函数 关键特性 Faster R-CNN 区域建议网络(RPN) 两阶段检测器 损失函数 差异分析 共同特点 基于深度学习 目标框预测 损失函数优化 支持多类别检测 应…

go chan底层分析

go chan底层分析 底层源码hchanmakechan 方法 环形队列阻塞机制向管道写数据流程图源码 从管道读数据流程图源码 关闭通道 底层源码 hchan type hchan struct {qcount uint // 当前队列中剩余元素个数dataqsiz uint // 环形队列长度,即可以…

【Git版本控制器--1】Git的基本操作--本地仓库

目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统,主要用于跟踪文件的更改,特别是在软件开发中。 为什么要版本…

【C语言】_字符串拷贝函数strcpy

目录 1. 函数声明及功能 2. 使用示例 3. 注意事项 4. 模拟实现 4.1 第一版:基本功能判空const修饰 4.2 第二版:优化对于\0的单独拷贝 4.3 第三版:仿strcpy的char*返回值 1. 函数声明及功能 char * strcpy ( char * destination, cons…

AIGC时代:如何快速搞定Spring Boot+Vue全栈开发

文章目录 一、Spring Boot基础二、Vue.js基础三、Spring Boot与Vue.js集成四、性能优化与最佳实践《快速搞定Spring BootVue全栈开发》 内容简介作者简介目录前言/序言本书内容本书特点读者对象 随着人工智能生成内容(AIGC)技术的迅速发展,…

C语言结构体漫谈:从平凡中见不平凡

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文《1》 结构体的两种声明一、结构…

lwip单网卡多ip的实现

1、今天要实现lwip的多个ip配置,本来以为需要自己修改很多核心代码 2、查阅资料才发现,lwip已经把接口留出来了 /** Define this to 1 and define LWIP_ARP_FILTER_NETIF_FN(pbuf, netif, type) * to a filter function that returns the correct neti…

MySQL NaviCat 安装及配置教程(Windows)【安装】

文章目录 一、 MySQL 下载 1. 官网下载2. 其它渠道 二、 MySQL 安装三、 MySQL 验证及配置四、 NaviCat 下载 1. 官网下载2. 其它渠道 五、 NaviCat 安装六、 NaviCat 逆向工程 软件 / 环境安装及配置目录 一、 MySQL 下载 1. 官网下载 安装地址:https://www.m…

HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口

1. HarmonyOS next ArkTS ArkTS围绕应用开发在 TypeScript (简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 以下代码是一个基于…

Web第一次作业

主页: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>主页</title> </head> <body> <h1>你好&#xff01; 来到我的网站</h1> <p><a href"login…

大疆最新款无人机发布,可照亮百米之外目标

近日&#xff0c;DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列&#xff0c;包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起&#xff0c;DJI Matrice 4T价格为38888元起。 图片来源&#xff1a;大疆官网 DJI Matrice 4E DJI Matrice 4T D…

掌握C语言内存布局:数据存储的智慧之旅

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 引言正文一、数据类型介绍1.内置类型2.自定义…

图论的起点——七桥问题

普瑞格尔河从古堡哥尼斯堡市中心流过&#xff0c;河中有小岛两座&#xff0c;筑有7座古桥&#xff0c;哥尼斯堡人杰地灵&#xff0c;市民普遍爱好数学。1736年&#xff0c;该市一名市民向大数学家Euler提出如下的所谓“七桥问题”&#xff1a; 从家里出发&#xff0c;7座桥每桥…

ubuntu20.04安装MySQL5.7

deb安装 下载deb文件并配置 wget https://repo.mysql.com//mysql-apt-config_0.8.12-1_all.deb sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb我使用xshell可以正常。 这个弹出框里&#xff0c;选择的是“ubuntu bionic”。(在终端工具上&#xff0c;有可能显示不了选项)【…

openharmony标准系统方案之瑞芯微RK3568移植案例

标准系统方案之瑞芯微RK3568移植案例 ​本文章是基于瑞芯微RK3568芯片的DAYU200开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c…

【C语言】_求字符串长度函数strlen

目录 1. 函数声明及功能 2. 注意事项 3. 模拟实现 3.1 方式1&#xff1a;计数器方式 3.2 方式2&#xff1a;指针-指针方式 3.3 方式3&#xff1a;递归方式&#xff08;不创建临时变量计数器方式&#xff09; 4. strlen相关例题 1. 函数声明及功能 size_t strlen ( cons…