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 [<checked | free>] 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 :CopyFree goto :exit :CopyChecked if exist ./objchk/i386/*.sys move ./objchk/i386/*.sys . goto :exit :CopyFree if exist ./objfre/i386/*.sys move ./objfre/i386/*.sys . goto :exit :SetenvNotFound echo Can't found Setenv.bat. goto :exit :exit set DDKOPT= del *.log pause 以上为Build.bat的内容,简单解读一下流程,首先删除以前的编译的pdb以及sys文件,然后获得编译的选项,是release或者debug,然后使用ddk自带的setenv.bat来设置环境变量,接着进入关键部分,调用build.exe进行编译,最后将文件进行复制移动等等收尾工作看到我们上一个步骤中设置的环境变量DDKROOT发挥作用了吧!!好好的解读build.bat有助于快速的发现环境配置的错误 5. 添加‘MAKEFILE’文件 标准格式,不用更改,内容如下 # # DO NOT EDIT THIS FILE!!! Edit ./sources. if you want to add a new source # file to this component. This file merely indirects to the real make file # that is shared by all the driver components of the Windows NT DDK # !INCLUDE $(NTMAKEENV)/makefile.def 6. 添加‘Sources’文件 TARGETNAME=psloadedmodulelist TARGETPATH=obj TARGETTYPE=DRIVER # $(DDK_LIB_PATH)/ndis.lib MSC_WARNING_LEVEL=-W3 -WX MSC_OPTIMIZATION=/Odi INCLUDES= C_DEFINES= $(C_DEFINES) -DUNICODE -D_UNICODE C_DEFINES=$(C_DEFINES) -DNDIS50_MINIPORT=1 C_DEFINES=$(C_DEFINES) -DNDIS50=1 SOURCES = psloadedmodulelist.c 注意: TARGETNAME=psloadedmodulelist中的psloadedmodulelist表示最后生成的驱动名称 最后一句SOURCES=psloadedmodulelist.c的psloadedmodulelist.c代表需要编译的源文件,如果有多个源文件,那么都需要在这里列举出来 这两个地方是可以根据大家的需要进行更改 7. 添加源文件和头文件,然后就可以和编译一般的应用程序一样在vc6中进行编译了
VC中驱动编译方法
最新推荐文章于 2022-07-26 12:48:27 发布