E=drivername , 本参数用于指定生成的设备驱动程序名称(不需后缀名),所产
生的文件为drivername.sys.
TARGETPATH=.\lib, 本参数用于指定生成的设备驱动程序所存放的路径. 一般采用.\lib.
TARGETTYPE=DRIVER, build能够生成许多不同的目标对象,设备驱动程序一般选用
DRIVER.
INCLUDES=path1;path2;..., 本参数是可选的, 用于指定其他的#include文件的
搜索路径.
TARGETLIBS=lib1;lib2;..., 本参数是可选的, 用于指定其他的lib库文件的搜索路径.
SOURCES=file1.c file2.c ..., 本参数用于指定需被编译的全部源文件名称, 后缀名不能省
略,文件名之间用空格分开.
DIRS文件格式:
DIRS文件用于指定在当前目录下必须创建的子目录。DIRS文件的内容由一系列用空格分
开的目录名组成, \可用于表示对上一行的继续.
DIRS = \
subdir1 \
subdir2 \
subdir3
当前目录下如果只有DIRS文件而没有SOURCES, 则表示没有任何源文件需要编译,但需在
当前目录下创建子目录, 只有SOURCES文件而没有DIRS则表示有源文件需要编译但不需
创建子目录. 二者都有则表示有源文件需要编译且需创建子目录.
5. BUILD在编译时将会在TARGETPATH和当前目录下创建子目录或文件. 对于一般的
Intel平台, 以c:\ddk\src\general\simple\sys为例说明, 编译完后Build在sys目录下创建子目录
obj\i386\用于存放ldunld.obj. 在c:\ddk\lib\i386\checked保存编译好的ldunld.sys文件.
6. 如果你将设备驱动程序的类型从checked转到free, 则第一次编译源文件的free类型驱动
程序时你必须使用build 的-c选项来编译.
7. 可以使用regedit或regedit32来在
注册表中加入驱动程序的表项, ldunld.ini
的内容:
\registry\machine\system\currentcontrolset\services\Ldunld
Type = REG_DWORD 0x00000001
Start = REG_DWORD 0x00000003
Group = Extended base
ErrorControl = REG_DWORD 0x00000001
运行regini ldunld.ini即可加入相应的注册表项.
7. 在ddk的src目录下有许多示范程序可供参考.
8. 经过一些繁琐的设置,也可以在VC中直接编译驱动程序
1. 安装DDK(有人问,重装
系统之后是否可以还要再次安装DDK?回答是:如果ddk安装目录下的文件还在,那么不用再次安装了)
2. 设置环境变量
添加一个用户环境变量DDKROOT,他的值应该是你所安装DDK的根目录。(比如在安装DDK时安装到了d:\WINDDK\2600,那么 DDKROOT的值应该为d:\WINDDK\2600)
如何设置环境变量: 右键单击'我的电脑'->高级->环境变量->新建 (2000下的设置环境变量的地方)
3. 建立makefile工程
在vc6中,新建一个'Makefile'工程,在DEBUG configuration 中的Command line中填入build.bat checked,在RELEASE configuration的Command line中填入build.bat free
4. 向工程里面添加编译的批处理文件 ‘Bulid.bat’,其内容为
@echo off
rem -----------------------------------------------------------
rem usage:
rem build.bat [
]
rem -----------------------------------------------------------
if exist *.sys del *.sys
if exist .\objchk\i386\*.pdb del .\objchk\i386\*.pdb
if exist .\objfre\i386\*.pdb del .\objfre\i386\*.pdb
if exist .\objchk\i386\*.sys del .\objchk\i386\*.sys
if exist .\objfre\i386\*.sys del .\objfre\i386\*.sys
:start
set DDKOPT=%1
if "%DDKOPT%" == "" set DDKOPT=free
pushd .
if not exist %DDKROOT%\bin\setenv.bat goto :SetenvNotFound
call %DDKROOT%\bin\setenv.bat %DDKROOT% %DDKOPT%
popd
if exist %DDKROOT%\bin\x86\build.exe goto :start
%DDKROOT%\bin\build.exe
:start
%DDKROOT%\bin\x86\build.exe
if "%DDKOPT%" == "checked" goto :CopyChecked
if "%DDKOPT%" == "chk" goto :CopyChecked
if "%DDKOPT%" == "free" goto :CopyFree
if "%DDKOPT%" == "fre" goto :