人们都说在干正事之前,得先做足前戏才会爽,我一直很认同这个观点,下面我来总结下进行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. python 打包与部署

    环境:win10.eclipse-jee-mars.python2.7 打包在linux上进行安装测试 1.1 打包 项目目录结构如下: 打包对象:utils.reg 在P1项目的顶级目录,也就是ut ...

  2. Winform_播放声音文件

    1.调用非托管的dll using System.Runtime.InteropServices;  //DllImport命名空间的引用 class test  //提示音 { [DllImport ...

  3. testng标签运行顺序

    testng的annotations运行顺序为: @BeforeSuite @BeforeTest @BeforeClass @BeforeMethod @AfterMethod @AfterClas ...

  4. LocalStorage在Chrome里的实现

    前段时间我们在实现CanTK-Runtime时,也曾在V8基础上模拟过浏览器的LocaleStorage功能,其实现非常简单:每个domain的数据使用的单独文件存储,因为同一时间只有一个游戏运行,所 ...

  5. win7下安装MYSQL报错:"MYSQL 服务无法启动"的3534问题

    上午在win7下安装MYSQL,只到“net start mysql”这一步报错:3534的错误: 于是在百度中搜索关键字“mysql服务无法启动3534”. 参考以下两个链接中的方法,解决了3534 ...

  6. static与C#中的static

    Static 1.静态方法与非静态方法 a.静态方法的调用类.静态方法名([参数列表]) 非静态方法的调用类 对象 = new 类的构造函数([参数列表])对象.非静态方法名([参数列表]) 静态方法 ...

  7. Shell基础:常用技巧&重定向&管道操作

    Shell脚本介绍和常用工具 Shell脚本 Shell脚本:实际就是windows里的批处理脚本,多条可一次执行的Shell命令集合.Linux上的脚本可以用很多种语言实现,bash shell是比 ...

  8. OC 类别(分类)Categroy

    Categroy类别,又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同. 定义: ...

  9. python 循环设计

    for循环 1.range()用法 for循环后的in跟随一个序列的画,循环每次使用的序列元素而不是序列的下标 例:s='abcdefg' for i in range(0,len(s),3): pr ...

  10. word linkage 选择合适的聚类个数matlab code

    clear load fisheriris X = meas; m = size(X,2); % load machine % load census % % X = meas; % X=X(1:20 ...