当前位置: 首页 > news >正文

Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-24 转载或引用请注明原作者
接上文,当我们建立了蓝牙链接请求之后,就该传输数据了,
其实传输数据比起上章阐述的创建SDP和建立连接要简单许多。
使用类型 BRB_L2CA_ACL_TRANSFER 的BRB请求,就可以实现接收和发送操作,
至于具体是接收还是发送,根据设置的标志来区分,

因为我是把接收和发送请求都从驱动传输到应用层来处理的,
因此实现类似下面这样的代码:
static NTSTATUS cdo_ioctl_function(PDEVICE_OBJECT deviceObject, PIRP userIrp)
{
    NTSTATUS status = STATUS_SUCCESS;
    PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(userIrp); ///
    PFILE_OBJECT fileObject = irpStack->FileObject;
    bth_hid_user_t* user = (bth_hid_user_t*)fileObject->FsContext;  ///
    。。。。

    switch (irpStack->Parameters.DeviceIoControl.IoControlCode) 
    {
       。。。其他命令
    case IOCTL_BTH_DATA_TRANSFER:  //定义的用于接收或者发送的IOCTL命令
          status = ioctl_bth_transfer(user, userIrp);
          if (status =

相关文章:

Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-24 转载或引用请注明原作者 接上文,当我们建立了蓝牙链接请求之后,就该传输数据了, 其实传输数据比起上章阐述的创建SDP和建立连接要简单许多。 使用类型 BRB_L2CA_ACL_TRANSFER 的BRB请求,就可以实现接收和发送操作, 至于具体是接收还是发送,根据设…...

快速区分清楚图形渲染中的AABB,KD树和BVH这些概念

快速区分清楚图形渲染中的AABB,KD树和BVH这些概念 主要想形象去区分好这些术语,目的是扫盲,先开好坑,内容持续填充。 0.先摆出这些词的全称 AABB: 原名:axis aligned bounding box;中文直译名…...

Rust 的 HashMap 特定键值元素值的累加方法

在Rust中,如果你想要对HashMap中特定键对应的值进行累加操作,你需要首先检查该键是否已存在。如果存在,则取出其值,进行累加,然后将结果存回HashMap。如果不存在,则可能需要插入一个新的键值对,…...

Java后端项目性能优化实战-群发通知

背景 公司群发通知模块性能存在问题,我进行全面的系统调优,系统处理能力大幅提升。 原发送流程 优化后的发送流程 优化的点 说明:以下问题基本都是压测过程遇到的,有些问题普通的功能测试暴露不了。优化目标:保证高…...

5、Jenkins持续集成-Maven和Tomcat的安装与配置

文章目录 一、Maven的安装与配置1、安装maven并配置环境2、全局工具配置关联jdk和maven3、添加Jenkins全局变量4、修改settings.xml文件5、测试是否配置成功二、Tomcat的安装与配置1、安装tomcat8+2、配置Tomcat用户角色权限3、测试是否配置成功一、Maven的安装与配置 在Jenki…...

Qt教程 — 3.7 深入了解Qt 控件: Layouts部件

目录 2 如何使用Layouts部件 2.1 QBoxLayout组件-垂直或水平布局 2.2 QGridLayout组件-网格布局 2.3 QFormLayout组件-表单布局 在Qt中,布局管理器(Layouts)是用来管理窗口中控件位置和大小的重要工具。布局管理器可以确保窗口中的控件在…...

自动驾驶的几种名词

1. 自适应巡航控制(ACC) 自适应巡航控制(Adaptive Cruise Control,ACC)是一种汽车驾驶辅助系统,它可以根据前方车辆的速度和距离自动调整车辆的速度,以保持与前车的安全距离。ACC系统由控制层和…...

华为全套企业管理资料合集(21专题)

华为全套企业管理资料合集-知识星球下载 1.绩效考核 华为内训绝密资料:绩效管理与绩效考核.ppt 华为绩效管理与绩效考核制度.docx 华为公司实用性各种绩效图表汇总.doc 华为公司考勤管理制度.doc 华为IPD模式中跨部门团队成员的考核激励制度.doc 2.企业管理 华为公司人力资源…...

LeetCode Python - 74. 搜索二维矩阵

目录 题目描述解法方法一:二分查找方法二:从左下角或右上角搜索 运行结果方法一方法二 题目描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给…...

如何安全地添加液氮到液氮罐中

液氮是一种极低温的液体,它在许多领域广泛应用,但在处理液氮时需谨慎小心。添加液氮到液氮罐中是一个常见的操作,需要遵循一些安全准则以确保操作人员的安全和设备的完整性。 选择合适的液氮容器 选用专业设计用于存储液氮的容器至关重要。…...

LGBM算法 原理

简介 GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被…...

【WPF应用5】WPF中的TextBlock控件:属性与事件详解及示例

在WPF(Windows Presentation Foundation)开发中,TextBlock控件是一个常用的元素,用于显示静态或动态文本内容。它提供了丰富的属性和事件,使得开发者能够灵活地控制文本的显示样式和响应用户的交互行为。本文将详细介绍…...

【C语言基础】:内存操作函数

文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作…...

3.24作业

基于UDP的网络聊天室 项目需求: 如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…...

Excel双击单元格后弹窗输入日期

Step1. 在VBE界面新建一个窗体(Userform1),在窗体的工具箱的空白处右键,选中添加附件,勾选Calendar control 8.0,即可完成日历的添加。 PS:遗憾的是, Office 64 位没有官方的日期选择器控件。唯一的解决方案是使用Excel 的第三方日历。 参考链接:How to insert calen…...

原生 HTML/CSS/JS 实现右键菜单和二级菜单

文章来源:www.huhailong.vip 站点 文章源地址:https://www.huhailong.vip/article/1764653112011841538 Demo效果演示地址 先看效果图 {{{width“auto” height“auto”}}} 需要注意的就是边界检测处理,到极端点击底部和右侧时如果不做处理会…...

[项目前置]如何用webbench进行压力测试

测试软件 采用webbench进行服务器性能测试。 Webbench是知名的网站压力测试工具,它是由Lionbridge公司开发。 webbench的标准测试可以向我们展示服务器的两项内容: 每秒钟相应请求数 和 每秒钟传输数据量 webbench测试原理是,创建指定数…...

网络七层模型:理解网络通信的架构(〇)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

format(C++20)

1. std::format format_01.cpp // g format_01.cpp -stdc20 #include <iostream> #include <string> #include <format>void test_01() {// 使用字符串填充std::cout << std::format("Hello {}!\n", "World"); // Hello World!…...

Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下&#xff0c;数据传输、管理、共享问题的安全系统&#xff0c;通过加密、访问控制等策略&#xff0c;提供安全可靠的数据传输和共享服务&#xff0c;尤其适用于对网络安全建设要求高的行业&#xff0c;比如研发型企业、党政机构…...

数据科学揭秘椭圆曲线秩分布:BSD参数空间的拓扑结构探索

1. 项目概述&#xff1a;当数论遇到数据科学如果你研究过椭圆曲线&#xff0c;尤其是涉足过同余数问题&#xff0c;那你一定对Mordell-Weil秩和BSD猜想这些概念不陌生。这些名词听起来高深&#xff0c;本质上是在追问一个古老而迷人的问题&#xff1a;一条椭圆曲线上有多少个有…...

TMSpeech与腾讯会议集成:高效会议纪要生成的实际应用场景

TMSpeech与腾讯会议集成&#xff1a;高效会议纪要生成的实际应用场景 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech TMSpeech是一款专为腾讯会议设计的高效语音识别工具&#xff0c;能够实时将会议中的语音内容转换…...

纯前端到底要不要学 Java

最近被问了好几次&#xff1a;纯前端有没有必要学 Java。这问题其实没有标准答案&#xff0c;得看你现在在做什么、后面想往哪走。如果你平时的工作就是调 RESTful 接口、拿数据渲染页面&#xff0c;后端全给你包好了&#xff0c;那 Java 不学完全没问题。把 React、Vue 这些前…...

2026财务分析师新人如何快速提升能力:从“账房先生”到“战略参谋”的跃迁之路

2026年的财务领域&#xff0c;规则已经彻底改写。传统的“记账、算账、报账”正在被RPA和AI快速替代&#xff0c;企业真正渴求的&#xff0c;不再是只会做账的“会计”&#xff0c;而是能够深入业务、洞察数据、驱动决策的财务分析师。这不仅是职业进阶的必然要求&#xff0c;更…...

告别硬编码!在UE Niagara中创建可复用的自定义模块库(以动态力场为例)

告别硬编码&#xff01;在UE Niagara中创建可复用的自定义模块库&#xff08;以动态力场为例&#xff09;在虚幻引擎的视觉特效制作中&#xff0c;Niagara系统以其强大的粒子模拟能力成为特效师的核心工具。然而&#xff0c;随着项目复杂度提升&#xff0c;频繁复制粘贴相同逻辑…...

好用还专业!2026 降AIGC平台测评:最新工具推荐与对比分析

2026年真正好用的AI论文降重与改写工具&#xff0c;核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

DeepSeek LeetCode 2617. 网格图中最少访问的格子数 TypeScript实现

以下是 LeetCode 2617「网格图中最少访问的格子数」的 TypeScript 实现&#xff0c;采用 BFS 并查集&#xff08;路径压缩&#xff09; 优化&#xff0c;保证每个格子只被访问一次&#xff0c;时间复杂度 O(mnα(mn))&#xff0c;空间复杂度 O(mn)。typescript function minim…...

3分钟搞定视频字幕:VideoSrt自动生成工具全解析

3分钟搞定视频字幕&#xff1a;VideoSrt自动生成工具全解析 【免费下载链接】video-srt-windows 这是一个可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具。 项目地址: https://gitcode.com/gh_mirrors/vi/video-srt-windows 还在为视频字幕制作而头疼…...

英文会议翻译 app

一个针对开会读取大家说话的内容&#xff0c;过滤掉中文&#xff0c;只对英文的录音进行翻译&#xff0c;翻译的内容实时显示在屏幕上&#xff0c;除非点击停止&#xff0c;否则一直这样动态听并翻译成中文 显示在屏幕上的app,并直接安装在我手机上&#xff0c;并写一篇公众文章…...

AI Security Agent:嵌入CI/CD的自动化安全协作者

1. 这不是又一个“AI安全”的概念炒作&#xff0c;而是DevSecOps流水线里正在静默替换人工的三个关键岗位你有没有在凌晨两点收到过这样的告警邮件&#xff1a;「CI/CD流水线第472次构建失败——SonarQube检测到Critical级SQL注入漏洞&#xff0c;阻断发布」&#xff1f;紧接着…...