vipfengxiao
驱动牛犊
驱动牛犊
  • 注册日期2009-12-29
  • 最后登录2011-12-21
  • 粉丝1
  • 关注0
  • 积分79分
  • 威望681点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1893回复:0

DDK和VC6.0的编程环境的搭建 希望帮到需要的人

楼主#
更多 发布于:2010-04-13 10:09

这是我在网上找的一篇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 是程序的入口
游客

返回顶部