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

Windows驱动开发

开发Windows驱动程序时,debug比较困难,并且程序容易导致系统崩溃,这时可以使用Virtual Box进行程序调试,用WinDbg在主机上进行调试。

需要使用的工具:

Virtual Box:用于安装虚拟机系统,用于运行待测试的驱动程序;
Windows WDK: 需要和windows版本、Visual Studio SDK版本和WDK版本要完全一致。
WinDbg preview:在微软应用商店安装;
OSR Driver Loader:用于加载待调试的Windows驱动程序,需要禁用虚拟机的数字签名(https://www.osronline.com/article.cfm%5earticle=157.htm)

配置虚拟机和WinDbg:
  1. 首先进入虚拟机系统中,以administrator模式执行cmd,

输入bcdedit /debug on以及bcdedit /dbgsettings serial debugport:1 baudrate:11520;
也可以通过界面来配置
在这里插入图片描述

  1. 配置虚拟机系统的com1口为管道和主机进行通信,接着关闭虚拟机系统。

在Virtual Box的Settings->Serial Ports设置Port:COM1, Port Mode: Host Pipe,取消勾选Connect to existing pipe/socket, Path/Address: \.\pipe\com1
在这里插入图片描述

  1. 启动主机的WinDbg程序

打开file->Kernel Debug->选择COM口,勾选Pipe,Reconnect, Port改为\.\pipe\com1
在这里插入图片描述

启动测试模式
  1. Windows开启测试模式
    以管理员模式启动cmd,输入以下命令:

开启系统的测试模式 bcdedit /set testsigning on
开启操作系统内核调试 bcdedit /debug ON
开启应用程序调试 bcdedit /bootdebug ON

重启,重启后一般在电脑右下角会显示测试模式等字样,个人更偏向与使用此方式

  1. 启动禁用数字签名
    以管理员模式运行cmd执行如下命令:

禁用签名 bcdedit.exe /set nointegritychecks on
恢复签名 bcdedit.exe /set nointegritychecks off

编写一个简单的Windows驱动程序:

编写之前需要配置一下项目的VS配置。

#include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT pDriverObject) {DbgPrint("goodbye!\n");
}NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath) {DbgPrint("Hello, haidragon\n");pDriverObject->DriverUnload = DriverUnload;return STATUS_SUCCESS;
}
驱动安装和测试

使用OSR Driver Loader安装驱动和测试
使用dbgview工具查看驱动打印的日志,配置如下:

在这里插入图片描述

相关文章:

Windows驱动开发

开发Windows驱动程序时&#xff0c;debug比较困难&#xff0c;并且程序容易导致系统崩溃&#xff0c;这时可以使用Virtual Box进行程序调试&#xff0c;用WinDbg在主机上进行调试。 需要使用的工具&#xff1a; Virtual Box&#xff1a;用于安装虚拟机系统&#xff0c;用于运…...

汽车分析,随时间变化的燃油效率

简述 今天我们来分析一个汽车数据。 数据集由以下列组成&#xff1a; 名称&#xff1a;每辆汽车的唯一标识符。MPG&#xff1a;燃油效率&#xff0c;以英里/加仑为单位。气缸数&#xff1a;发动机中的气缸数。排量&#xff1a;发动机排量&#xff0c;表示其大小或容量。马力&…...

大数据面试题之Elasticsearch:每日三题(六)

大数据面试题之Elasticsearch:每日三题 1. 为什么要使用Elasticsearch&#xff1f;2.Elasticsearch的master选举流程&#xff1f;3.Elasticsearch集群脑裂问题&#xff1f; 1. 为什么要使用Elasticsearch&#xff1f; 系统中的数据&#xff0c;随着业务的发展&#xff0c;时间…...

【管理设计篇】聊聊分布式配置中心

为什么需要配置中心 对于一个软件系统来说&#xff0c;除了数据、代码&#xff0c;还有就是软件配置&#xff0c;比如操作系统、数据库配置、服务配置 端口 ip 、邮箱配置、中间件软件配置、启动参数配置等。如果说是一个小型项目的话&#xff0c;可以使用Spring Boot yml文件…...

远程控制平台简介

写在前面 之所以想自己动手实现一个远程控制平台,很大一部分原因是因为我那糟糕的记性,虽然经常加班到很晚,拖着疲惫的步伐回到家,才想起忘记打卡了,如果我能在家控制在办公室的手机打一下卡就好了… 有人说,市场上有TeamViewer,向日葵,AnyDesk,ToDesk,等等这些老大…...

韦东山Linux驱动入门实验班(5)LED驱动---驱动分层和分离,平台总线模型

前言 &#xff08;1&#xff09;前面已经已经详细介绍了LED驱动如何进行编写的代码。如果韦东山Linux驱动入门实验班&#xff08;4&#xff09;LED驱动已经看懂了&#xff0c;驱动入门实验班后面的那些模块实验&#xff0c;其实和单片机操作差不太多了。我就不再浪费时间进行讲…...

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境

知识点&#xff1a;简单了解K210芯片 2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。作为嘉楠科…...

C#——Thread与Task的差异比较及使用环境

C#——Thread与Task的差异比较及使用环境 前言一、差异1. 创建和管理&#xff1a;2. 异步编程&#xff1a;3. 返回值&#xff1a;4. 异常处理&#xff1a;5. 线程复用&#xff1a; 总结 前言 前面两篇文章&#xff0c;分别通过各自的实例讲了关于Task以及Thread的相关的使用特…...

刷题 31-35

三十一、 747. 至少是其他数字两倍的最大数 给你一个整数数组 nums &#xff0c;其中总是存在 唯一的 一个最大整数 。 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是&#xff0c;则返回 最大元素的下标 &#xff0c;否则返回 -1 。 示例 1&a…...

【mysql】—— 数据类型详解

序言&#xff1a; 本期我将大家认识关于 mysql 数据库中的基本数据类型的学习。通过本篇文章&#xff0c;我相信大家对mysql 数据类型的理解都会更加深刻。 目录 &#xff08;一&#xff09;数据类型分类 &#xff08;二&#xff09;数值类型 1、tinyint类型 2、bit类型 …...

kafka常用命令

查看主题 ./kafka-topics.sh --list --bootstrap-server 10.1.1.2:9092 创建主题 ./kafka-topics.sh --bootstrap-server 10.1.1.2:9092 --create --topic test_topic --partitions 1 查看消费者列表--list ./kafka-consumer-groups.sh --bootstrap-server 10.1.1.2:9092 -…...

数字图像处理(番外)图像增强

图像增强 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据&#xff0c;有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征&#xff0c;使图像与视觉响应特性相匹配。 图像对比度 图像对比度计算方式如下&#xff1a; C ∑ δ δ ( i , j …...

flutter:轮播

前言 介绍几个比较有不错的轮播库 swipe_deck 与轮播沾边&#xff0c;但是更多的是一种卡片式的交互式界面设计。它的主要概念是用户可以通过左右滑动手势浏览不同的卡片&#xff0c;每张卡片上都有不同的信息或功能。 Swipe deck通常用于展示图片、产品信息、新闻文章、社…...

高忆管理:股票投资策略是什么?有哪些?

在进行股票买卖过程中&#xff0c;出资者需求有自己的方案和出资战略&#xff0c;并且主张严格遵从出资战略买卖&#xff0c;不要跟风操作。那么股票出资战略是什么&#xff1f;有哪些&#xff1f;下面就由高忆管理为我们剖析&#xff1a; 股票出资战略简略来说便是能够协助出资…...

为公网SSH远程Ubuntu配置固定的公网TCP端口地址主图

文章目录 为公网SSH远程Ubuntu配置固定的公网TCP端口地址 为公网SSH远程Ubuntu配置固定的公网TCP端口地址 在上篇文章中&#xff0c;我们通过cpolar建立的临时TCP数据隧道&#xff0c;成功连接了位于其他局域网下的Ubuntu系统&#xff0c;实现了不同操作系统、不同网络下的系统…...

【前端知识】React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置

React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouter&#xff08;hoc/with_router.js&#xff09; import { useNavigate } from "react-router-dom"; // 封装一个高阶组件 function withRou…...

Qt几种字符类型的相互转换

Qt几种字符类型的相互转换 将const QString转换为const char*将const char*转换为const QStringQstring转换为string把string转换为QstringQt中弹出一个窗口 将const QString转换为const char* #include <QString> #include <iostream>int main() {const QString …...

软件测试员的非技术必备技能

成为软件测试人员所需的技能 非技术技能 以下技能对于成为优秀的软件测试人员至关重要。 将您的技能组合与以下清单进行比较&#xff0c;以确定软件测试是否适合您 - 分析技能&#xff1a;优秀的软件测试人员应具备敏锐的分析能力。 分析技能将有助于将复杂的软件系统分解为…...

渗透测试:Linux提权精讲(二)之sudo方法第二期

目录 写在开头 sudo expect sudo fail2ban sudo find sudo flock sudo ftp sudo gcc sudo gdb sudo git sudo gzip/gunzip sudo iftop sudo hping3 sudo java 总结与思考 写在开头 本文在上一篇博客的基础上继续讲解渗透测试的sudo提权方法。相关内容的介绍与背…...

ansible安装lnmp(集中式)

文章目录 一、安装nginx二、安装mysql三、安装php测试&#xff1a; 一、安装nginx - name: the nginx playhosts: webserversremote_user: roottasks:- name: stop firewalld #关闭防火墙service: namefirewalld statestopped enabledno- name: selinux stopc…...

如何快速解锁QQ音乐加密格式:面向普通用户的完整音频解密指南

如何快速解锁QQ音乐加密格式&#xff1a;面向普通用户的完整音频解密指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump …...

MinerU 2.5-1.2B镜像体验报告:PDF转Markdown,效果远超传统工具

MinerU 2.5-1.2B镜像体验报告&#xff1a;PDF转Markdown&#xff0c;效果远超传统工具 1. 引言&#xff1a;为什么选择MinerU&#xff1f; 1.1 传统工具的局限性 在日常工作中&#xff0c;我们经常需要将PDF文档转换为Markdown格式。传统的工具如PyPDF2、pdfplumber在处理简…...

【2026年恒生电子春招- 4月2日-第一题- 等差数列模最大值】(题目+思路+JavaC++Python解析+在线测试)

题目内容 某智能手环公司需统计用户在 $ 2024 $ 年 $ 5 $ 月的健康数据,分析用户的步数达标情况。由于部分设备存在数据上报故障,需在分析中排除故障期间的数据。具体表如下: 用户表( $ users $ )存储用户基本信息 $ user_id $ : $ INT $ 类型,主键,用户唯一标识。 $…...

Qwen2.5深度微调成果展示|像素剧本圣殿在武侠/赛博朋克题材表现

Qwen2.5深度微调成果展示&#xff5c;像素剧本圣殿在武侠/赛博朋克题材表现 1. 项目概览 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这个独特的创作环境将先进的大语言模型能力与8-Bit复古美学完美融合…...

【2024大厂AI基础设施面试压轴题】:手写Cuvil自定义Op注册+自动融合Pass(附可运行验证代码)

第一章&#xff1a;Cuvil 编译器在 Python AI 推理中的应用 面试题汇总Cuvil 是一款面向 AI 推理场景的轻量级领域专用编译器&#xff08;DSL Compiler&#xff09;&#xff0c;专为优化 Python 中基于 PyTorch/TensorFlow 模型的部署而设计。它通过静态图重写、算子融合与硬件…...

3步搞定飞书文档批量导出:告别手动复制粘贴的终极解决方案

3步搞定飞书文档批量导出&#xff1a;告别手动复制粘贴的终极解决方案 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为飞书文档的迁移备份而烦恼吗&#xff1f;每次需要导出几十上百个文档…...

MCP Agent Graph: 基于上下文工程的多智能体系统构建指南

1. 引言: 从单一模型到多智能体协作 1.1 大语言模型的能力边界 大语言模型(LLM)的发展经历了从简单文本生成到复杂推理的演进过程。早期的应用场景主要集中在问答、翻译、摘要等相对独立的任务上&#xff0c;模型作为一个无状态的推理引擎&#xff0c;接收输入并产生输出。然…...

Hunyuan-MT-7B性能实测:像素语言传送门在单卡A10上并发10路翻译的延迟与稳定性报告

Hunyuan-MT-7B性能实测&#xff1a;像素语言传送门在单卡A10上并发10路翻译的延迟与稳定性报告 1. 测试背景与目标 像素语言传送门&#xff08;Pixel Language Portal&#xff09;是基于腾讯Hunyuan-MT-7B模型构建的创新翻译工具&#xff0c;其独特的16-bit像素冒险界面设计为…...

OpenClaw+Qwen3.5-9B:技术文档翻译与本地化自动化

OpenClawQwen3.5-9B&#xff1a;技术文档翻译与本地化自动化 1. 为什么选择这个技术组合&#xff1f; 去年参与一个开源项目时&#xff0c;我遇到了文档本地化的难题。项目文档有300多页Markdown文件&#xff0c;需要翻译成5种语言。传统翻译工具要么破坏格式&#xff0c;要么…...

rk3576(5)之设备树下GPIO驱动

1、简介rk3576buildroot设备树GPIO驱动编写。个人理解设备树就相当于存在统一规则、统一管理的头文件&#xff0c;记录了开发板的设备信息。2、设备树语法2.1、dtsi 头文件设备树也支持头文件&#xff0c;设备树的头文件扩展名为.dtsi设备树文件不仅可以应用 C 语言里面的.h 头…...