人们都说在干正事之前,得先做足前戏才会爽,我一直很认同这个观点,下面我来总结下进行windows8.1的WDK调试所要做的准备工作。

软件安装:

1、VS2013。

2、WDK8.1

3、Windows Kits安装目录下的8.1\Romote\x86(x64)\wdk Test Target Setup x86-x86_en-us.exe(远程调试使用)

调试环境设置:

安装WDK8.1之后,驱动开发、部署、调试等工具都集成到VS2013 IDE中了,在进行调试之前,我们需要对开发环境做必要的设置:

1、准备目标主机

msdn文档:Provision a computer for driver deployment and testing (WDK 8.1)查看
1、在目标主机上安装操作系统,并把host、target computer加入相同的域和工作组;安装wdk。
C:\Windows\System32\drivers\etc
2、如果target computer开启了安全启动(secure boot),要关闭它。
3、在target computer上,安装WDK Test Target Setup x64-x64_en-us.msi(在C:\Program Files (x86)\Windows Kits\8.1\Remote\x64目录下)。
4、如果target computer安装的是N或者KN版本的windows,要另外安装媒体特性包,详见msdn文档。
5、如果target computer安装的是windows server,那么WDK Test Target Setup就会建立一个DriverTest文件夹。找到这个文件夹,右键->属性->在安全标签,给认证用户组以修改的许可。

Verify that the host and target computers can ping each other. Open a Command Prompt window, and enter pingComputerName.

2、目标主机的配置:

安装了WDK8.1之后,VS2013菜单栏多了Driver项。通过层次菜单项Driver->Test->configure computers->add a new computer来配置目标主机:

第一是远程登录,这个好像需要目标主机的管理员账号才行,普通账号不能登录到。

第二是调试的连接类型,有串口、网口、USB口等多种连接类型,大家应该都更倾向于网口吧,简单方便。但需要注意,主机和目标机器都必须是Windows8或以上版本才能采取网口连接方式,如果有任何一台主机是Windows7,那只能采取其他连接方式了。

3、驱动部署到目标机器

打开package属性页(package工程加黑而不是package文件夹加黑),打开Driver Install->Deployment标签页,选择Enable deployment;选择目标主机名;其它默认就可以了。这样,当我们生成解决方案时(注意是package工程),IDE会自动编译驱动工程并自动把驱动部署到目标远程主机上去。生成成功后,目标远程主机会出现这样一个文件夹:c:\DriverTest,我们可以查看此文件夹下是不是出现了我们所要调试的驱动来验证生成成功与否。

注意:在生成解决方案之前,我们要正确选择解决方案配置和解决方案平台。对于我而言这两者分别是Win8.1 debug和X64。

3、安装驱动

在目标机器上,打开设备管理器,按照以下步骤安装调试驱动

  1. In the Action menu, click Add Legacy Hardware, and the Add Hardware Wizard appears. Click Next and then Next again.
  2. In the Add Hardware window, select Show All Devices.
  3. In the Manufacturer list in the left pane, click Microsoft.
  4. You should see the AVStream Simulated Hardware Sample in the Model pane on the right. Click this and then click Next.
  5. Click Next again to install the driver, and then click Finish to exit the wizard.

开始调试:远程驱动调试不能像一般程序那样直接点击开始调试就可以的,要通过工具->附加到进程对话框来设置。譬如调试内核模式驱动,那么传输(transport)选择Windows kernel mode debugger;限定符(qualitier)选择目标机器名。

结束调试:常规结束方法,点击停止调试就可以了。

[windows驱动]windows8.1驱动调试前戏的更多相关文章

  1. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

    catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...

  2. Windows内核安全与驱动开发

    这篇是计算机中Windows Mobile/Symbian类的优质预售推荐<Windows内核安全与驱动开发>. 编辑推荐 本书适合计算机安全软件从业人员.计算机相关专业院校学生以及有一定 ...

  3. [windows驱动]内核态驱动架构

    1.windows驱动简介: 1.1 windows组件简介: 1.2 windows驱动类型: windows驱动分为两种基本类型: 用户态驱动在用户态下执行.它们一般提供一套win32应用程序和内 ...

  4. KVM下windows虚拟机使用virtio驱动

    KVM下windows虚拟机默认disk使用的是Qemu IDE硬盘,网卡默认是rtl8139网卡.为了使kvm主机在相同的配置下,有更好的效率,可以将网卡和磁盘替换成virtio的驱动. windo ...

  5. WDF驱动的编译、调试、安装

    编译和调试使用WDK编译,源代码应包括wdf.h,ntddk.h以及KMDF_VERSION=1,编译使用/GS.KMDF包括以下库:1). WdfDriverEntry.lib(编译时绑定):驱动入 ...

  6. 《windows内核安全与驱动开发》ctrl2cap中的ObReferenceObjectByName疑问

    国内有关于windows内核驱动这块的书籍实在是甚少,不过好在<windows内核安全与驱动开发>这本书还算不错(内容方面),但是不得不说这本书在许多地方存在着一些细节上的问题.比如我今天 ...

  7. 《Windows内核安全与驱动开发》 7.1&7.2&7.3 串口的过滤

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 7.1&7.2&7.3 串口的过滤 一.设备绑定的内核API ...

  8. 《Windows内核安全与驱动开发》阅读笔记 -- 索引目录

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调 ...

  9. 《Windows内核安全与驱动开发》 2.3 重要的数据结构

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 2.3 重要的数据结构 一.驱动对象  Windows内核采用__的编程方式 ...

随机推荐

  1. 如何从NFS文件系统启动

    笔记,备忘! 步骤: 1.设置好NFS服务器 2.修改uboot启动参数bootarg setenv bootargs console=ttySAC0 root=/dev/nfs nfsroot=19 ...

  2. PHP 实现多服务器共享 SESSION 数据

    PHP 实现多服务器共享 SESSION 数据 2011 年 12 月 05 日评论暂缺 一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一 ...

  3. commonJS — 数组操作(for Array)

    for Array github: https://github.com/laixiangran/commonJS/blob/master/src/forArray.js 代码 /** * Creat ...

  4. Python核心编程-细节

    直接从六张开始看看书里有什么. cmp() len() max() and min() sorted() and reversed() enumerate() and zip() sum() list ...

  5. jquery 设置checked="checked"无效,radio未选中。。

    jquery 设置checked="checked"无效,radio未选中.. 最好还是使用.prop(),在jQuery1.6版本之前.attr存在一些bug.在1.6之后它会自 ...

  6. 修改IIS文件上传大小限制

    如果要上传的文件比较大,则需在IIS中修改文件上传的大小限制,否则无法上传(表现为程序不报错,而上传进度到100%后没有反应). 点击"管理"下的"配置编辑器" ...

  7. C++/C#中堆栈、对象内存模型、深浅拷贝、Array.Clone方法

    转载自:http://blog.csdn.net/jarvischu/article/details/6425534 目录 1.      C++/C#中对象内存模型................. ...

  8. js中event.target,this

    event.target这是注册事件时的对象,或者它的子元素.通常用于比较 event.target 和 this 来确定事件是不是由于冒泡而触发的.经常用于事件冒泡时处理事件委托. 1.this和e ...

  9. 各种浏览器css hack

    转载 http://www.cnblogs.com/jikey/archive/2010/06/21/1761924.html IE都能识别*,标准浏览器(如FF)不能识别*:IE6能识别*,但不能识 ...

  10. 去除list集合中重复项的几种方法

    因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8&quo ...