阅读:1986回复:0
DDK和VC6.0的编程环境的搭建 希望帮到需要的人这是我在网上找的一篇DDK和VC6.0的编程环境的搭建 希望帮到需要的人 嘿嘿 我自己也是这么配置的 刚开始利用ddk开发驱动程序的时候采用的是ultraedit编辑工具,然后编译安装驱动程序.参考www.USBSOLUTION.COM,现在介绍在vc中开发驱动程序的配置方法. 一. 准备工作 1.首先创建一个你的驱动工程文件目录。这个目录下用来放置你的各个驱动工程文件夹。(比如我在D盘创建了一个MyDrivers文件夹作为我的驱动工程文件目录) 2.然后添加两个用户环境变量,一个是DDKROOT,他的值应该是你所安装DDK的根目录。(比如在安装DDK时安装到了d:\WINDDK\2600,那么 DDKROOT的值应该为d:\WINDDK\2600),另外一个变量是WORKPATH,这个变量的值就应该是你第一步所创建的驱动工程目录的路径。(若按本文,WORKPATH的值应该是D:\MyDrivers ),这两个变量会在我们接下来的工程配置中要用到,当然既然是变量,他们的名称是随你的喜欢了。 //这里要注意的是,如果以后你创建了一个新的工程之后,这里需要改动 3.最后在D:\MyDrivers下创建一个名称为DIRS的无扩展名的文件。用记事本打开它,写上 DIRS=Driver1。Driver1是你的驱动文件所在的文件夹名. 如果以后有新的工程也要把工程名称添加到这里 DIRS= \ irda \ config \ ndis \ wshsmple \ modem 也就是 在本目录下面有 irda config ndis wshsmple modem这几个工程 //MakeDriver.bat应该放在工程目录下面 4.写一个MakeDriver.bat批处理文件.如下.(直接copy,不用修改) @echo off if "%1"=="" goto usage1 if "%3"=="" goto usage2 if not exist %1\bin\setenv.bat goto usage3 call %1\BIN\setenv %1 %4 %2 cd %3 build -b -w %5 %6 %7 %8 goto ok :usage1 echo Error: the first parameter is NULL! goto exit :usage2 echo Error: the third parameter is NULL! goto exit :usage3 echo Error: %1\bin\setenv.bat not exist! goto exit :ok echo MakeDriver %1 %2 %3 %4 :exit 二.建立一个Makefile工程 下面我将要建立一个Driver1的工程。他的路径将是D:\MyDrivers\Driver1 1.打开vc6.0,建立一个Makefile的新工程,输入工程名(比如:Driver1)及路径(我们要选择你所创建的驱动工程文件目录D:\MyDrivers)。 2.在Debug配置对话框中输入如下: //红色的D:应该特别注意,不然的话不能成功哦 Build Command Line: MakeDriver %DDKROOT% D: %WORKPATH% CHECKED 注意:D: %WORKPATH% CHECKED ,如果你的驱动工程文件的目录为E:\myDrivers 则应该修改为 Build Command Line: MakeDriver %DDKROOT% E: %WORKPATH% CHECKED 这个地方曾经出错,调试了半天,haha Rebuild all optines: -nmake/a Output file name: 改为sys扩展文件( 比如: Driver1.sys ) 3.在Release配置对话框中输入如下: Build Command Line: MakeDriver %DDKROOT% D: %WORKPATH% FREE Rebuild all optines: -nmake/a Output file name: 改为sys扩展文件( 比如: Driver1.sys ) 4.工程配置结束,选择Finish按钮 这时我们可以看到我们的驱动工程文件目录中已经有了一个Driver1的工程文件夹,我们的驱动程序就放在这个文件夹下面。 三.还需要两个文件 还有两个文件是必须的 makefile和sources,将他们拷贝到工程文件夹,也就是D:\MyDrivers\Driver1中,但sources文件一般需要我们改写,makefile直接从ddk目录中拷贝来一个放在工程文件夹下就行了。 在sources文件中一般需要改写的部分如下: TARGETNAME=DRIVER1 INCLUDES=$(DDKROOT)\inc; \ $(DDKROOT)\inc\DDK TARGETLIBS=$(DDK_LIB_PATH)\usbd.lib \ $(DDK_LIB_PATH)\ntoskrnl.lib SOURCES = driver1.cpp TARGETNAME 的值是你驱动程序的名字,比如我的会输出DRIVER1.SYS INCLUDES 将所有你所用到的内核函数,他们所在的头文件的路径添加进来。 TARGETLIBS 将所有你所用到的内核函数,他们所在的库文件的路径添加进来。 SOURCES 就是你工程文件夹需要编译的所有文件名,包括.CPP,.C,.RC文件 好了,基本上可以编写驱动程序了. 然后你就可以编写windows程序一样,写驱动程序. 如果编译成功的话,就会在.\objchk\i386下面生成 *.sys了 我的DDK是从微软下的最新版本,好象是2003 sp1 ddk.免费下. 下面是我的一些感受和理解: (1) 用VC6.0的IDE编辑环境,是为了方便的组织工程文件,也是大家比较熟悉的方式. (2)上面文章中提到的 MakeDriver.bat 文件其实是用来进行编译的.上文的步骤二.2 和3 中的内容也可以在建立好之后,通过ALT+F7 或者菜单 Project ->Settings 打开对话框来重新设置. 有的时候,我不在VC下编译,而是在DOS状态下. 先远行程序->Development Kits ->Windows DDK 3790.1830 ->Build Enviroment-> Windows Xp ->Windows Xp Checked Build Enviroment就会转到DOS界面了.再把目录改到你的工程目录,比如上文中的D:\MyDrivers\Driver1,直接输入build就可以进行编译了. (3)我编的这个程序是一个控制台程序,无法从VC中直接启动.它会报错为:Cannot execute program.这个时候只有在DOS下,转到生成的那个可执行文件夹下运行,比如上文提到的D:\MyDrivers\Driver1\objchk_wxp_x86\i386下. (4)资源文件的问题.我在VC下直接建立了一个对话框,把名字保存成工程名.rc 之后,这个文件并不象真正的VC工程那样把它加到source files之下,如果关闭这个文件之后就只能自己再打开了. 在你建立 .rc文件的同时,一个resource.h文件也被自动建立了,如果你要使用这个对话框,你得在你的启动文件的. h 中加入 #include "resurce.h" ,这里要用引号,表示resurce.h文件是在工程内. (5)我用记事本打开 sources文件之后,把里面的 TARGETTYPE UMTYPE UMENTRY 这三个关键字在 DDK的帮助文档里查了一下. TARGETTYPE 表示你编译的是普通的程序 还是 驱动程序 UMTYPE 表示是控制台还是带有窗口 UMENTRY 是程序的入口 |
|