首页 > 系统相关 >Windows 蓝牙驱动开发-安装蓝牙设备

Windows 蓝牙驱动开发-安装蓝牙设备

时间:2025-01-16 13:29:27浏览次数:3  
标签:驱动程序 配置文件 Windows 蓝牙 驱动 安装 ID 设备

蓝牙配置文件驱动程序有两种安装类型:

  • 客户端安装,在此类安装中,远程设备播发其服务,并且计算机与之连接。 示例包括:鼠标、键盘和打印机;
  • 服务器端安装,在此类安装中,计算机播发服务,并且远程设备可以连接到计算机以使用这些服务;

例如,供应商可以创作服务器端安装,使移动设备能够打印到附加到计算机的打印机。这两种安装类型需要不同的安装过程。

安装客户端配置文件驱动程序

想要使用启用蓝牙的设备的用户将设备置于计算机范围内,并使用客户端配置文件驱动程序的以下安装序列启动从计算机到远程设备的连接。

  • 在“控制面板”中选择“添加蓝牙设备”以查找计算机范围内的所有设备;
  • 选择要与之配对的设备;
  • 将设备与本地无线电配对,这可能涉及也可能不涉及 PIN 交换;
  • 本地无线电会发出 SDP 查询,以识别远程设备上支持的服务;
  • “找到新硬件向导”将搜索本地硬盘驱动器和 Windows Update 上的相应驱动程序;
  • 如果“找到新硬件向导”找不到适用于设备的驱动程序,它会提示用户插入配置文件驱动程序安装介质,其中包含配置文件驱动程序的设备安装信息文件(INF 文件);

安装服务器端配置文件驱动程序

蓝牙驱动程序堆栈支持蓝牙 SIG 定义的服务 GUID,以及蓝牙 SIG 未定义的自定义 GUID。

随 Microsoft Windows SDK 一起提供的 guidgen.exe 工具可用于创建自定义 GUID。

必须编写用户模式安装应用程序,以公开远程蓝牙设备可以使用的计算机功能。

安装应用程序必须与蓝牙驱动程序堆栈通信,才能为要公开的功能创建服务 GUID。 供应商在应用程序及其设备安装 INF 文件中指定服务 GUID。

安装应用程序必须调用用户模式 API BluetoothSetLocalServiceInfo。 在应用程序可以调用此 API 之前,应用程序必须具有 SE_LOAD_DRIVER_NAME 安全特权。 下面的代码示例演示如何获取此特权。 请注意,该示例不演示错误处理。

HANDLE procToken;
LUID luid;
TOKEN_PRIVILEGES tp;

OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &procToken);

LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &luid);

Tp.PrivilegeCount = 1;
Tp.privileges[0].Luid = luid;
Tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(procToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD)NULL)

配置文件驱动程序 INF 文件

配置文件驱动程序的 INF 文件包含有关客户端安装蓝牙设备的信息。 对于服务器端安装,INF 文件会指定与安装应用程序创建的服务 GUID 对应的设备 ID。 所有蓝牙设备都是蓝牙类的成员。 蓝牙类安装程序 (Bthci.dll) 可协助安装配置文件驱动程序。

即插即用 ID

蓝牙驱动程序堆栈会根据以下模板生成硬件 ID:

  • BTHENUM\{ ServiceGUID}_VID& nnnnnnnn
  • BTHENUM\{ ServiceGUID}_VID& nnnnnnnn_PID& nnnn
  • BTHENUM\{ ServiceGUID}_LOCALMFG& nnnn

蓝牙驱动程序堆栈会根据以下模板生成兼容的 ID:

  • BTHENUM\{ ServiceGUID}

ServiceGUID 是扩展为 128 位 GUID 的 16 位 GUID,由蓝牙规范定义。 例如,{00001124-0000-1000-8000-00805F9B34FB} 对应于 HID 设备。

  • VID& 后面的八位数字对应于供应商 ID 代码;
  • PID& 后面的四位数字对应于产品 ID 代码;
  • LOCALMFG& 后面的四位数字对应于本地蓝牙无线电制造商;
  • VID/PID 和 LOCALMFG 标记彼此独立;

最通用的设备 ID 本身是 ServiceGUID。 例如:

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}

通过在远程设备和 INF 文件中使用即插即用 ID,可以将蓝牙驱动程序堆栈限制为加载配置文件驱动程序和软件,以便仅在特定版本的远程设备上运行。 仅当设备发布堆栈可以使用 SDP 检测到的即插即用 ID 时,蓝牙驱动程序堆栈才会生成 VID/PID 对。 例如:

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_VID& nnnnnnnn_PID& nnnn

可以通过在 INF 文件中的设备 ID 中指定 LOCALMFG 标记,将蓝牙驱动程序堆栈限制为加载配置文件驱动程序和软件,以便仅在特定的本地蓝牙无线电上运行。 例如:

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_LOCALMFG& nnnn

 

标签:驱动程序,配置文件,Windows,蓝牙,驱动,安装,ID,设备
From: https://blog.csdn.net/m0_72813396/article/details/145126524

相关文章

  • Windows系统下NoteFlow的下载:提供直观、易用的界面,使用户能够轻松创建和连接笔记节点
    NoteFlow(适用于python3.9及以上):功能:节点笔记软件,有助于更好地组织和管理笔记内容。特点:提供直观、易用的界面,使用户能够轻松创建和连接笔记节点。一.从github上获取创作者的代码跳伞到github下载文件压缩包二.Windows只按照pip就行使用pip安装(适用于所有平台)打开命令行......
  • 推荐1款Windows实用干货软件,完全吊打系统自带!
    聊一聊Win系统自带的搜索使用起来确实不怎么好用。特别是有时候想要一个文件的时候。搜索就是不出来,关闭重新打开,重启都不行。真是让人烦。今天给大家分享一款文件搜索神器。搜索速度嘎嘎快。软件介绍文件搜索神器Everything功能单一,只能搜索,但搜索的速度是真快。......
  • 深入解析 ipoib_vlan.c:IPoIB 驱动中的 VLAN 管理
    引言在InfiniBand网络中,IPoIB(IPoverInfiniBand)是一种允许传统IP应用程序在InfiniBand网络上运行的协议。ipoib_vlan.c 是Linux内核中IPoIB驱动的一部分,主要负责处理VLAN(虚拟局域网)相关的功能。本文将详细解析该文件的功能、关键函数及其实现逻辑。文件概述ipo......
  • 深入解析 ipoib_verbs.c:IPoIB 驱动中的核心实现
    ipoib_verbs.c 是Linux内核中InfiniBand协议栈的一部分,属于IPoverInfiniBand(IPoIB)驱动的核心实现文件。IPoIB是一种在InfiniBand网络上传输IP数据包的技术,它允许传统的IP应用程序在InfiniBand硬件上运行。本文将详细分析 ipoib_verbs.c 文件的功能、实......
  • 蓝牙6.0新特性浅析
    蓝牙6.0新特性浅析|DD'Notes蓝牙6.0新特性浅析蓝牙6.0的核心规范包含了许多新特性和改进,以下是一些主要的新特性:14.1NewfeaturesSeveralnewfeaturesareintroducedinv6.0.Themajorareasofimprovementare:•ChannelSounding,includingChannelSoundingHCI......
  • I/O 模型——阻塞 I/O、非阻塞 I/O、 I/O 多路复用、信号驱动 I/O、异步 I/O
    目录1.阻塞I/O(BlockingI/O)2.非阻塞I/O(Non-blockingI/O)3.I/O多路复用(I/OMultiplexing)4.信号驱动I/O(Signal-drivenI/O)5.异步I/O(AsynchronousI/O)总结I/O模型(Input/OutputModel)定义了程序与外部设备(如磁盘、网络、终端等)之间的数据交互方式。在计算机系......
  • Windows 可靠多播传输驱动程序(RMCAST) 是 Windows 操作系统中负责支持和管理可靠多播(Re
    CVE-2025-21307漏洞是Windows可靠多播传输驱动程序(RMCAST)中的远程代码执行漏洞。该漏洞允许未经身份验证的攻击者在受影响的系统上执行任意代码,可能导致系统被完全控制。漏洞描述:该漏洞存在于Windows可靠多播传输驱动程序(RMCAST)中。攻击者可以通过发送特制的请求......
  • Windows自定义变量打开文件或文件夹
    前言全局说明Windows系统自带很多变量,方便使用。参照系统设置,我们可以自定义一些变量,快速打开文件或文件夹。例如:在运行或文件夹地址栏输入%TEMP%就能打开对应文件夹一、说明1.1环境:Windows11家庭版23H222631.37371.2环境变量位置用户变量:自定义的文件(夹)......
  • Windows python venv 虚拟开发环境
    前言全局说明Windowspythonvenv虚拟开发环境一、说明1.1环境:Windows11家庭版23H222631.3737Python3.8.10(tags/v3.8.10:3d8993a,May32021,11:48:03)[MSCv.192864bit(AMD64)]onwin32二、venv2.1创建项目目录mkdirxhs-monitorcdxhs-monito......
  • Windows pyenv管理多python 版本环境安装
    前言全局说明Windowspython多版本安装,因为开发功能和客户要求,py脚本会被要求不同版本,但是命令行输入时同一个名字只能对应一个版本,如果多个版本,那只能改名字。比如:python3.8python3.9有什么方法用一个python使用不同版本呢?一、说明1.1环境:Windows11家庭版23H2......