Windows XP + VC 6.0 + WinXP_DDK + DriverStudio 3.2_windows xp ddk-程序员宅基地

技术标签: winddk  build  xp  ddk  wizard  windows  

Windows XP + VC 6.0 + WinXP_DDK + DriverStudio 3.2

1·前言
开发windows内核驱动程序是一个非常具有挑战性的工作,你得忍耐调试过程中操作系统 不断蓝屏、不断崩溃的噩梦,所以强烈建议你采用虚拟机做开发平台,这样即使把整个系统都搞蹦了,大不了从新装过虚拟机而已。那么搭建一个完整的 Windows驱动开发环境是每个人必须迈过的第一道坎。本文将具体介绍如何安装和配置好一个完整的DDK开发换件:
Windows XP + 英文原版Visual studio 6.0 + WinXP_DDK + DriverStudio 3.2

2·准备工作
先要把eset(360杀毒软件)卸载掉。从网站http://www.moodisk.com/download_other_c.php下载并解压下列软件:
(1)·DriverStudio_3.2_CR.rar;
(2)·Visual.C++.6.EN.zip;
(3)·winxp_ddk.rar;
(4)·ntstrsafe.lib+csq.lib.rar;
解压DriverStudio_3.2_CR.rar,进入解压后的目录DriverStudio_3.2_CR,再把其中 driverstudio.3.2.crack.rar解压,产生目录driverstudio.3.2.crack,里面有两个文件SN.txt和 compuware.dat,前者包含序列号,后者是证书文件,这两个文件在安装过程中会用到。

(DriverStudio 3.1下载地址:http://blog.csdn.net/mobidogs/archive/2007/01/23/1491503.aspx

3·安装和配置
软件的安装顺序:Windows XP --> VC6.0 --> WinXP_DDK -> DriverStudio3.2,如果顺序装错了,那么把DriverStudio3.2删除再重装就OK了。从网上找到库文件 ntstrsafe.lib+csq.lib.rar,把解压出来的两个库文件拷贝到WinXP_DDK的安装目录下的库目录中(我的是 C:\WINDDK\2600\lib\wxp\i386)。启动vc6,然后进行简单的配置:菜单DriverStudio菜单下的DDK Build Settings,在弹出的对话框中选择已经安装的DDK目录(比如我的是C:\WINDDK\2600),在Windows DDK compiler Options中选择"Enable only for Driver Studio"。
VC6.0-->Tools-->Options,点击"Directories"选项卡:
1)·“Show directories for:"下选择Include files,然后检查有没有包含ddk的头文件目录(我的是C:\WINDDK\2600\inc\wxp),如果没有则加上;
2)·“Show directories for:"下选择Library files,然后检查有没有包含ddk的库文件目录(我的是C:\WINDDK\2600\lib\wxp\i386),如果没有则加上;


注意:安装DDK时一定要把例子安装(建议你安装全部的模块),否则编译vdwlibs.dsw时会报如下的错:
vdw_wdm.lib - 1 error(s), 0 warning(s)
然后打开引起错误的文件,发现:
#error The file is from the DDK at src\wdm\hid\inc. Install DDK HID samples to install hidport.h.  Or update INCLUDE path for hidport.h in the DDK! 
这表明安装WinXP_DDK的时候没有安装实例。

4·编译适合本机使用的库文件(以下内容,如果用DDK编程者可以不看)
(1).启动VC6.0。开始-->所有程序 -->Compuware DriveStudio-->Develop-->DDK Building Settings,确保“DDK Root Directory”下方的内容是ddk的安装目录(比如我的是C:\WINDDK\2600),然后点击下方的"Luanch Program"正式启动vc6的开发环境。
(2).进入菜单File-->Open Workspace(打开位于DriverStudio3.2安装目录的\DriverWorks\Source\vdwlibs.dsw)--> 进入菜单Build-->batch Build,点击“Select x86"按钮只选中全部的32位库(我的电脑是32位的。注意:对于32位的电脑一定不要选中64位的库,否则后面编译会出错)-->点击按 钮"Rebuild AlL”开始编译。(注意:这种方法我曾经成功过一次,但后来再也没成功过,于是百度GOOGLE很久,发现下面这样也行:设置VdwLibs为活动项,选中Win32 WDM Checked,然后用DriverStudio里面的 Build with Build.exe即可以。然后再选Win32 WDM Free再Build一下,这样就出现了想要的vdw_wdm.lib
注:如果出现无法打开文件这类的错误,一般都是DDK Build Settings指向不对,或安装顺序有误,或者你在32位机器上选中了64位库。

5·编译一个DriverStudio自带的实例
(1)·启动vc6,点击菜单 File-->Open Workspace,打开项目文件C:\Program Files\Compuware\DriverStudio\DriverWorks\Examples\wdm\hellowdm \HelloWdm.dsw,然后编译,如果没有报错,那说明安装和配置成功。但请你别高兴的太早,开发环境安装配置成功只是万里长城的第一步,剩下的你 就是要理解驱动模块的架构和具体的代码编写了。

6·使用Driver wizard生成驱动程序框架
(1).在VC6.0的界面下,点击菜单DriverStudio-->Driver wizard,此后系统会一步一步引导你完成设置,最后自动生产的驱动程序框架。
(2).设置好后将生成驱动文件,然后用VC6.0进行编译:进行Build菜单,Rebuild AlL将生成.sys文件,说明驱动模块编译成功!
注:如果出现无法打开ntstrsafe.lib的错误,说明系统缺少这个库文件,参照上面的方法补上这个库文件,或者进入菜单 Project-->Settings,鼠标点击左边方框里的最上面一行,然后右边"Project Option"下的ntstrsafe.lib并删除它

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qingruo_yin/article/details/6612701

智能推荐

SQL解决视图问题_sql视图被挡住了-程序员宅基地

好不容易在安装中解决了字符集问题,然而在练习视图这一部分时发现只要牵扯上文字,就会出错!!mmmm,希望下一代SQL能彻底解决这个问题!!!废话不多说,直接看问题:这是怎么回事??我的student表中有女孩纸啊,为什么显示为空啊…归根结底,还是字符集的问题,孩纸,还是在创建数据库的时候改成中文字符集吧…那么我要用韩语什么的,还要改字符集么…答案是…改正后:敲黑板!!create da..._sql视图被挡住了

state_dict_state_dict.keys_Wanderer001的博客-程序员宅基地

torch.nn.Module.state_dict (Python method, in Module)state_dict(destination=None, prefix='', keep_vars=False)[source]返回一个包含整个模型状态的字典。包含参数和现在的缓冲器(例如,运行平均值)。键对应着参数和缓冲器的名字。返回值:包含整个模型的字典。a dictionary containing a whole state of the module例:>&g_state_dict.keys

OPENCV配置:找不到opencv_world3XXd.dll的问题_opencv opendllame-程序员宅基地

用VS在x64下运行包含opencv的程序时,报错类似下图:解决办法:把自己opencv文件目录下的\opencv\build\x64\vc14\bin中的三个dll文件,拷贝到C:\Windows\System32 中。..._opencv opendllame

outlook如何修改收发服务器,如何将Outlook2010收邮件方式由IMAP更改为POP3-程序员宅基地

如何将Outlook2010收邮件方式由IMAP更改为POP3以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何将foxmail中的POP3 改为IMAP不能修改,只能从新新建账号的时候邮箱类型选择IMAP,IMAP是同步协议,设置好后会同步网页邮箱保留的所有邮件。如何把邮件客户端收信模式POP3改为IMAP模式好多使..._在outllook如何把邮箱类型imap改成pop3

Android中实现定时周期任务的方法_android 周期任务-程序员宅基地

本文介绍几种Android中实现定时周期任务的方法.1.TimerTimer timer = new Timer( );TimerTask task = new TimerTask( ) {public void run ( ) {//如果不需要操作UI则可以省略handler的部分直接在定时器里完成业务逻辑doSth_android 周期任务

随便推点

线程加锁两次-死锁问题实验-程序员宅基地

今天遇到了这个问题,晚上回来写个例子试试,试试证明还是会死锁的。一个不同线程分别加锁的例子,这种情况是不会死锁的。#include #include pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;int count = 0;void * thread_func_one(void *arg){ int i; for(i=0;i

Python如何把字典写入到CSV文件_辰子王的博客-程序员宅基地

在实际数据分析过程中,我们分析用Python来处理数据(海量的数据),我们都是把这个数据转换为Python的对象的,比如最为常见的字典。 比如现在有几十万份数据(当然一般这么大的数据,会用到数据库的概念,不会去在CPU内存里面运行),我们不可能在Excel里面用函数进行计算一些值吧,这样是不现实的。 Excel只适合处理比较少的...

open ni linux,Ubuntu环境下安装配置OpenNI实战笔记的方法及命令_睁眼闭眼哦的博客-程序员宅基地

1. 库OpenNI SensorKinect NITE的安装(1)OpenNIstep1 :下载 OpenNI库文件http://www.openni.org/Downloads/OpenNIModules.aspx选择“OpenNI Binaries”->“Unstable”->“...for Ubuntu...”,点击“Download”。setp2: 下载完成后解压,得到文件夹...

pdfFactory怎么合并PDF_factor pdf_小马哥的幸福的博客-程序员宅基地

工作中收集、整理资料是非常耗时的事。因为文件格式的不同,整理起来又有诸多不便。而PDF文档可以将多种不同格式的资料整合为一个文件,便于储存、传输。使用虚拟打印机便可以将不同渠道的多种格式的资料合并为一个PDF文档,那么pdfFactory怎么合并PDF呢?一、收集资料首先,来看看如何使用pdfFactory Pro虚拟打印机收集以下四种常见格式的文档吧。1、Word文档打开Word文档,通过“文件——打印”路径,打开“打印设置弹窗”,打开“打印机名称”下拉框,选择“pdfFactory Pro _factor pdf

Leetcode 题解 - 搜索--BFS(1):计算在网格中从原点到特定点的最短路径长度_leetcode 二维网格返回原点的最短距离-程序员宅基地

深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。BFS广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。第一层:0 -> {6,2,1,5}第二层:6 -> {4} 2 -> {} 1 -> {} 5 -> {3..._leetcode 二维网格返回原点的最短距离

告诉您APACHE RewriteEngine到底有哪些用途_apace rewriteengine-程序员宅基地

转自:http://www.eobo.cn/news/230.html首先要学会怎么设置httpd.conf 的设置, 什么 ALL 就不用用说了要看你的 httpd.conf 是否设置正确了,很简单,只要你在 .htaccess 里随便录入一些 比如 adbasdfasdf 之类的文件,保存,设置 htaccess 是不用重启 apache 的, 这时看下是不是网页上显示的乱码_apace rewriteengine