本方法是来源于自《windows防火墙与网络封包截获技术》 ,我只是厚颜无耻的加了点东西贴在这里,一是为不知道如何搭建环境的朋友行个方便,二是在这里做一个备忘录(以前的老blog里面讲的不清不楚,因此这次翻新整理一下)
编 译驱动当然可以使用命令行来编译,但是如果能够在vc6里面就集成驱动的编译将会使一件非常痛快的事情,毕竟vc的IDE环境对源代码的管理、编写支持的 非常好,况且还有可爱的vc助手,将会使我们的工作事半功倍,不过要记住的vc只是为我们建立了一个代码编辑以及编译的外壳,而其核心还是使用的ddk提 供的编译工具来进行编译的,下面进入环境搭建
1. 安装DDK(有人问,重装系统之后是否可以还要再次安装DDK?回答是:如果ddk安装目录下的文件还在,那么不用再次安装了)
2. 设置环境变量
添加一个用户环境变量DDKROOT,他的值应该是你所安装DDK的根目录。
正在装载数据…… |
如何设置环境变量: 右键单击'我的电脑'->高级->环境变量->新建 (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中进行编译了
本文来源:http://blog.csdn.net/galihoo/archive/2007/08/05/1726710.aspx