VS2017+WDK10驱动编译与调试

2023-11-20

驱动编译:

安装VS2017 和WDK 10 ,下载地址:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk

如果安装VS2017时没有选择安装windows SDK,打开Visual Studio Iinstaller添加安装sdk组件
这里写图片描述

VS2017安装完成,启动下载好的wdksetup安装wdk10

创建驱动项目例子:
这里写图片描述
打开VS2017进行项目属性配置:
在这里插入图片描述
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

按照上面的项目属性设置后,编译项目输出如下:
这里写图片描述

驱动调试(网络调试):

主计算机(192.168.0.102)目标计算机(192.168.0.106 ) ( 虚拟机也可以)
确保两台计算机互相ping通(最简单的办法就是将防火墙关闭)

目标计算机(WIN8及以上系统):

以管理员权限运行CMD
//允许进行内核调试

bcdedit /set {default} DEBUG ON

bcdedit /set TESTSIGNING ON

bcdedit /debug on

//hostip 为主计算机ip,port为网络通讯端口,key为网络通讯所需密钥(主计算机VS2017配置驱动调试时需要填入)

bcdedit /dbgsettings net hostip:192.168.0.102 port:50000 key:1.2.3.4

//查看settings

bcdedit /dbgsettings

将主计算机编译的驱动安装在目标计算机上进行代码调试。)
将wdk安装目录下的WDK Test Target安装程序拷贝到目标计算机安装,C盘DriverTest目录下devcon进行驱动安装(网上查询devcon命令安装驱动)
这里写图片描述
*

主计算机:
VS2017菜单栏 => Test =>Configure Devices
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

VS2017进行源代码调试:*
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述
windbg命令

//指定驱动所需的程序调试数据库路径(编译驱动输出的.pdb文件路径)
kd> .sympath G:\点滴记录\7-28\driver\KMDF Driver1\x64\Debug

//重载  /n只加载内核模块(根据需求选择)
kd> .reload /n /f

//在代码处设置断点,运行调试
kd> g 

目标计算机触发驱动,进入断点调试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2017+WDK10驱动编译与调试 的相关文章

  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • Windows 上的 Apache Pig 在运行“pig -x local”时出现“hadoop-config.cmd”未被识别为内部或外部命令”错误

    如果您由于以下错误而无法在 Windows 上运行 Apache Pig hadoop 2 4 0 bin hadoop config cmd is not recognized as an internal or external com
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • 如何在拥有句柄时检查给定进程是否正在运行

    我在用ShellExecuteEx启动应用程序 成功开始阅读后TShellExecuteInfo hProcess获取已启动进程的句柄 我想定期检查我的应用程序启动的进程是否仍在运行 两个或多个同名进程可以同时运行 我想确保我的应用程序正在
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • 使用特定的 JRE 运行 JAR 文件

    在 Windows 上有没有办法使用位于特定文件夹中的 JRE 运行 JAR 文件 类似于 Eclipse 在您提供给它的某个路径中查找其 JRE 的方式 一些 Windows 可执行代码 C 或 C 或批处理文件都可以完成这项工作 谢谢
  • 查找所有 DHCP 和 DNS 服务器

    我有一位客户要求我找到他所有的 Dhcp 和 DNS 服务器以及一些附加信息 例如 DC 服务器和操作系统 所以我决定尝试提高我的 powershell 技能 但我对此还很陌生 所以我写了这个脚本 但我想仍然缺少一些东西 因为它不起作用 编
  • 按名称显示进程的命令行

    我在cmd中使用以下命令来获取进程命令行 它提供了所有流程的详细信息 WMIC OUTPUT C ProcessList txt PROCESS get Caption Commandline Processid 我想在记事本中按名称获取特
  • 使用 Rust 构建的 DLL 在运行时是否需要 libgcc.dll?

    如果我构建一个 DLLRust 语言 http rust lang org 是否需要libgcc dll在运行时出现 一方面 我在互联网上的某个地方看到过一个帖子 声称是的 rustc exe has libgcc s dw2 1 dll在

随机推荐

  • Nuttx操作系统(三):构建模式

    1 1 Nuttx构建配置以及模式 Nuttx有三种不同的构建配置 FLAT构建 这种构建是所代码驻留在公共地址空间中 1 应用 内核以及board logic在一个flat地址环境中 2 所有的地址空间具有相同的属性 PROTECTED构
  • expected primary-expression before 'unsigned' 解决方案

    问题描述 语句result unsigned int 1 lt lt i 在本地可以编译运行 但是上传至LeetCode后出现编译错误 expected primary expression before unsigned 分析 语句太复杂
  • 【MedusaSTears】复杂定时任务SpringBoot+Quartz实例,解决jobclass如何注入一个service类,以及实现简单业务逻辑

    目录 吃水不忘挖井人系列 1 认识了解各种定时任务实现方式 2 本文主要参考 3 其他参考 一 业务需求 这里提一下我对 Scheduled和Quartz的一点小看法 如有误解还请指正 二 软件环境 java版本 SpringBoot版本
  • Ubuntu环境下使用APT安装Jenkins(详细教程)

    目录 1 安装JDK 1 1 使用APT查找已安装的JDK 1 2 若没有JDK11 则需要安装 2 使用war包或者APT两种安装方式 2 1 war包安装 推荐 方法简单 配置使用JDK 2 2 APT安装 3 配置Jenkins 3
  • 人工智能数学基础:利用导数判断函数单调性、凹凸性、极值、最值和描绘函数图形

    一 单调性判断定理 定理 设函数y f x 在 a b 上连续 在 a b 内可导 1 如果在 a b 内f x 0 且等号仅在有限多个点处成立 那么函数y f x 在 a b 上单调增加 2 如果在 a b 内f x 0 且等号仅在有限多
  • java 常见的异常大集合

    算术异常类 ArithmeticExecption 空指针异常类 NullPointerException 类型强制转换异常 ClassCastException 数组负下标异常 NegativeArrayException 数组下标越界异
  • Java多线程 - 线程池常用容量设置

    线程执行方式 线程的执行是由CPU进行调度的 一个CPU在 同一时刻只会执行一个线程 操作系统利用了时间片轮转的方式 CPU给每个任务都服务一定的时间 然后把当前任务的状态保存下来 再加载下一个任务的状态后 继续服务下一个任务 任务的保存及
  • Android Studio卸载以及安装教程

    手把手教学安卓安装 一 卸载教程 如果是第一次安装 直接看往下翻 1 先把Android Studio卸载2 将安装残余一起卸载 一定要卸载干净 否则在二次安装时会出现一大堆问题 a b c 好啦 到这里 所有的残余都已经删除干净 下面进入
  • opengl光线跟踪算法_计算机图形中的光线追踪(ray tracing)概念

    这是对MIT Foundation of 3D Computer Graphics第20章的翻译 本章讲解了光线追踪 ray tracing 技术的基础知识 本书内容仍在不断的学习中 因此本文内容会不断的改进 若有任何建议 请不吝赐教nin
  • centos7 网络不通?

    仅仅作为自己的笔记自己后续查看 1 首先我这里的vmvare 需要改成nat 模式 然后解决这个问题需要修改3个文件 1 etc sysconfig network 主机名 默认网关 DNS 2 etc sysconfig network
  • python 报错DataFrame object has no attribute dtype

    错误信息 DataFrame object has no attribute dtype 原因 在dataframe astype str 的列的数据类型有object类型 解决方法 将对象的列的数据先转成字符串
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • Java中String类的使用(一):如何判断一个字符串中是否含有指定的字符或字符串

    这里我给大家介绍三种简单的方法 一 使用String类中的contains CharSequence s 方法 使用contains CharSequence s 方法时 当且仅当此字符串包含指定的字符或字符串时 返回 true 否则返回f
  • 【Android Studio】Design editor is unavailable until next gradle sync.如何解决?

    Design editor is unavailable until next gradle sync 如何解决 打开一个网上开源的下载文件 在查看安卓页面布局 也就是控件布局时 会出现一个bug Design editor is unav
  • MYSQL 8.0 及以上版本设置远程连接。

    卸载 在 Ubuntu 系统上彻底卸载 MySQL 8 0 可以按照以下步骤进行操作 停止 MySQL 服务 输入以下命令 sudo systemctl stop mysql 删除 MySQL 相关文件和文件夹 输入以下命令 sudo ap
  • 刷脸支付解决开店实体商家易守店难的难题

    刷脸成为了现实 各地实行刷脸的试点都取得成功 刷脸也就这样的走进我们的生活 不需要带手机 钱包 直接选择刷脸 当然 方便的还是无须等待排队 原本一个收银台需要配备一名收银员 所以考虑人力成本收银柜台数量是有限的 但是使用刷脸支付 商家可以同
  • python中类的函数的调用

    这里要考虑的重要事项是您正在使用的变量和 或函数名称的范围 全局范围意味着 一切都可以看到它 无论是在顶层 在函数内部 还是在一个类中的方法内部 本地范围意味着它已锁定在该块的上下文中 并且块外的任何内容都无法看到它 在 您的情况下 该块是
  • 使用JavaScript 将Json数据导出CSV文件

    原理 CSV文件格式单元格之间是通过 隔开的 CSV文件格式里 换行是通过 n实现的 从上面两条结论 我们只有把相应的数据转换成 和 n就可以了 但其实真正的答案应该是把相应的数据转换成 和 r n 为什么会这样 且让我一一道来 我们在编辑
  • C++&QT-模仿string类

    目录 1 mystring h 2 mystring cpp 3 mian cpp 4 运行结果 1 mystring h ifndef MYSTRING H define MYSTRING H include
  • VS2017+WDK10驱动编译与调试

    驱动编译 安装VS2017 和WDK 10 下载地址 https docs microsoft com zh cn windows hardware drivers download the wdk 如果安装VS2017时没有选择安装win