驱动开发 环境搭建(VS2008+WDK+DDKWzard)

这篇文章比较适合初学驱动,搭建一个自动化的环境对于开发来说是事半功倍啊;

开发驱动,首先就是搭建开发的环境。既然是开发windows下的驱动程序,那MS的开发工具是一定要的。现在vs都到2010了,所以,也不能总是抱着vs6.0写代码,也要与时俱进~当然又不能太潮流吗……所以选用vs2008开发驱动。好了废话不多说了,下面记录一下我搭环境的步骤。

一、VS2008的安装

vs2008的详细安装见:Visual Studio 2008系列教程(一):VS 2008安装详解!

ok 接下来该驱动开发的核心了……

二、WDK的介绍、下载、安装及配制

1、关于WDK

Windows Driver Kit(驱动程序工具包): 是一种完全集成的驱动程序开发系统,它包含 Windows Driver Device Kit (DDK),用于测试 Windows 驱动程序的可靠性和稳定性,包括:

  • Windows Driver Foundation (WDF) 简化了 Windows 驱动程序的开发和支持。
  • 头文件重构 (Windows Vista 和更高版本)通过提供更简单的目录结构、避免声明冲突以及对所有支持的 Windows 版本使用单一头文件集,降低头文件的复杂性。
  • Installable File Systems (IFS) Kit将头、库、示例以及文档作为 WDK 的一部分分发。
  • 验证程序和静态分析工具, (如 PREfast 和 静态驱动程序验证程序)帮助您在编译时查找 bug。

2、下载WDK

曾经下载WDK好像还必须得http://connect.microsoft.com/注册后才能下载,而且下载后还有一句提示:

提醒:您必须接受附带的许可条款才能使用此软件。不得分发下载软件包。”

所以当时下载的时候还要走一些不得不走的路。不过,今天好像发现WDK能直接下载了

下载地址:http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO

如果不能正常下载,具体操作请见如何下载WDK

3、安装WDK

  1. 用虚拟光驱加载下载好的.ISO镜像文件,双击运行,出现下面亲切的画面 
  2. 接触,出现以下画面,在左侧的树形复选框中选择要安装的组件及工具,建议全部安装,选择好后点击“OK”~~后面的就简单了~ 
  3. 尔后,一路确定默认即可 

 

三、DDKWzard的介绍、下载、安装及配制

在VS2008IDE中没有提供驱动开发的项目选项,当然可以用普通工程,然后手动在VS中配制相应的编辑连接以及调试选项,但是如此只来,每次都要重复些复杂的步骤。在http://ddkwizard.assarbad.net/网站上发现了一个很好用的辅助工具DDKWizard,能够方便地对开发环境进行配置,真是适合想我这样懒人啊,工具的作者也自称是因为懒惰才开发此工具,看来“懒惰是推动科技发展的动力”一点不假 。

  • DDKwzard安装需要三个文件:DDKWzard主程序:安装VS2008的项目模板ddkwizard_setup.exe
  • DDKBUILD.CMD:应该是用VS2008调用WDK编辑编译器的一系列脚本dkbuild_cmd.zip
  • DDKBUILD.BAT :估计也是是用VS2008调用WDK编辑编译器的一系列脚本ddkbuild_bat.zip
  1. 安装ddkwizard_setup,默认安装,一路Next点过即可,将DDKBUILD.CMD与DDKBUILD.BAT考到WDK的安装目录,或者其它目录也行,只要在后续的设置就行。如:我将其放在wdk的目录下,如图 

     
  2. 设置环境变量 
    添加相应的环境变量,如要开发XP系统下的驱动则添加WXPBASE,变量值为WDK的根目录,如图 



    如果为其它系统开发驱动则填写相应的环境变量 
    NT 4.0 -----------NT4BASE

    windows2000----W2KBASE

    windowsXP-------WXPBASE

    windows2003----WNETBASE

    win7/2008 R2----W7BASE 

  3. 打开VS 2008,菜单“工具”->“选项”->左侧“项目和解决方案”->“VC++目录”->右侧“可执行文件”下拉列表->添加一项D:/WINDDK(根据你的实际情况,就是第1步中DDKBUILD.CMD与DDKBUILD.BAT所在的路径)。 

     
  4. 然后就可以在我们的VS2008中新建项目了,如下图,在Visual C++选项卡中多了DDK Project的项目类型,选择相应的模板添加我们的项目,点击确定 
  5. 确定后出现DDKWzard的项目创建页面,在“Choose the DDKBUILD you want to use”中选择“ddkbuild.cmd”或者“ddkbuild.bat”,在其下面选择我们要为Who(2000,xp……)开发的驱动。 
    最后finish 
  6. 在解决方案中便是由DDKWzard为我们自动生成的一个简单的驱动程序框架。 
     
  7. 最后点击F6生成解决方案,成功生成后在项目的objchk_win7_x86/i386文件夹下会生成几个文件 
    driver1.obj ---编译生成的2进制文件 
    driver1.pdb---用于调试时使用的符号文件 
    vc90.pdb-----用于调试时使用的符号文件 
    driver1.sys---就是我们拭目以待的驱动程序文件 
     

 

四:可能出现的错误

  • error PRJ0019: 某个工具从以下位置返回了错误代码: "正在执行生成文件项目操作" 
    错误原因:没有设置“项目和解决方案”中的“VC++目录” 
     

  • 解决方案:在“工具”->“选项”->“项目和解决方案”->“VC++目录”->“可执行文件”添加ddkbuild.cmd和ddkbuild.bat所在的路径。 
  • 错误的结果 3 (从“C:/WINDOWS/system32/cmd.exe”返回)。    
    错误原因:没有设置环境变量 


    解决方案:添加相应的环境变量

五:友情提示

在用VS2008开发驱动时,建议在菜单“视图”->“输出”(或快捷键:Ctrl+W,O)开启项目的输出显示,能显示项目生成时的细节!

转载于:https://www.cnblogs.com/Y4ng/articles/2719938.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

戏说领域驱动设计(十八)——内验

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475   验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证…

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

背景需求很简单,分析所有的设备的内存使用率,看那些设备的内存不够用是否需要加内存。。。下面的脚本逻辑,就是通过提取zabbix数据库中的hostid,在提取itemid。。然后通过item name过滤提取趋势数据,获取一天中最大的内…

Annotation版本的HelloWorld

hiberante 的 annotation历史: 在hibernate3以后,开始支持Annotation; 先有hiberante再有JPA,有了JPA标准之后,hibernate写了Annotation来支持JPA;所以 hibernate的annotation是JPA标准之下的,一般都直接用…

自己用java实现飞鸽传书 2 - 实现文件传输

第二步:实现文件传递。 上一步只是从服务端传递了一个字符串到客户端,这次需要对代码进行调整,实现从服务端获取文件,在客户端将文件存入目标地址。 调整后的代码: 服务端: import java.io.DataInputStream…

如何理解JavaScript中给变量赋值,是引用还是复制

一、JavaScript中值的类型 JavaScript中的值分为2大类:基本类型和引用类型。每种类型下面又分为5种类型。 基本类型: 数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false)&#x…

CommonCollection1反序列化链学习

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 CommonsCollection1 1、前置知识 1.1、反射基础知识 1.1.1、 对象与类的基础知识 类(class)&am…

【英语天天读】第一场雪

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ --Henry Wadsworth Longfellow The first snow came. How beautiful it was, falling so silently, all day long, all night long, on the mountains, on the meadows, on the roofs of the living, o…

性能测试的目的与类型

1.性能测试的目的 (1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策;(2)寻找系统瓶颈,进行系统调优;(4)检测软件中的问题;(5)验证稳定性、可靠性&#x…

求三位数的质数

没做出来啊&#xff0c;原来有这么多方法啊。首先&#xff0c;我连质数是什么都不知道&#xff01;质数&#xff1a;只能被本身和1整除的数帖子里回复了不少方法&#xff1a;class Zhishu {public static void main(String[] args) {int count0;for(int i1;i<100;i){count0…

[转]VS2010+MFC解析Excel文件中数据

本文转自&#xff1a;http://www.vcfans.com/2010/08/vs2010-mfc-excel-file-in-the-data-analysis.html 前两天折腾一个小功能&#xff0c;需求是解析Excel中的数据出来。网上一般使用的方案&#xff1a;1. ODBC当数据库来操作。2. 使用第三方的类库3. 使用COM调用Excel.exe中…

MySQL索引机制(详细+原理+解析)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 MySQL索引机制 永远年轻&#xff0c;永远热泪盈眶 一.索引的类型与常见的操作 前缀索引 MySQL 前缀索引能有效减小索引文…

War-Driving(战争驾驶***)

War-Driving总结性的文章 以后应该不会在到这方面过多的下功夫了。点我下载转载于:https://blog.51cto.com/0x007/1586376

array sort - 4 : merge sort

NULL转载于:https://www.cnblogs.com/roadmap99/p/6698809.html

带研发团队后的日常思考1 初级管理者的困惑

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 带研发团队后的日常思考1 初级管理者的困惑 前言&#xff1a; 本人于2020年4月开始接触管理工作到现在有2年的时间&#…

短连接生成器——让你的url地址长度变短

http://www.henshiyong.com/tools/sina-shorten-url.php 转载于:https://www.cnblogs.com/mangu-uu/archive/2012/10/15/2724290.html

JS函数调用的四种方法

js的函数调用会免费奉送两个而外的参数就是 this 和 arguments 。arguments是参数组&#xff0c;他并不是一个真实的数组&#xff0c;但是可以使用.length方法获得长度。 书上有说4中调用方式&#xff1a; 方法调用模式函数调用模式构造器调用模式apply调用模式下面我们来看看一…

Django项目引入NPM和gulp管理前端资源

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前言 之前写了一篇《Asp-Net-Core开发笔记&#xff1a;使用NPM和gulp管理前端静态文件》&#xff0c;现在又来用Django开发…

有声听书

各位领导/投资人/用户/合作伙伴&#xff1a; 我们的产品《有声听书》是为了解决中年人&#xff0c;中老年人的痛苦。他们需要丰富生活&#xff0c;但是现有的方案并没有很好地解决这些需求&#xff0c;我们有独特的办法&#xff0c;有戏剧&#xff0c;书的音频能给用户带来好处…

OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测

在笔记十四中&#xff0c;我们使用了Sobel算子对图像进行边缘检测&#xff0c;理论依据是像素变化最快的地方最有可能是边缘处&#xff0c;所以使用sobel算子对图像做微分&#xff0c;得到的结果图像当中灰度较大的区域&#xff0c;即为边缘处。 在这里&#xff0c;我们使用Lap…

设计模式之:享元模式FlyweightPattern的实现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 享元模式的理解&#xff1a; 享元模式的定义&#xff1a;运用共享技术支持大量细粒度对象的复用&#xff1b; Flyweight P…