黑道风云粤语在线观看:用VC编译驱动程序

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 02:55:59
1.【前言】

最近有很多人问我怎么样在VC下编译驱动程序,我嫌一个人一个人的解释起来太麻烦,所以把有关的知识整理成一篇文章。

需要特别说明的是,这不是一篇教你怎样写驱动的文章,要学习驱动开发,你应该去看ArtBaker的书。


2.【索引】

1.前言
2.索引
3.编写批处理文件build.bat
4.创建makefile工程
5.测试
6.常见问题


3.【编写批处理文件build.bat】

VC开发环境下并没有驱动程序的编译器。编译驱动程序的“正规”方法是使用DDK开发包中的编译工具(它们都是基于命令行方式的)。但是VC中有一种makefile的工程,这种工程在build的时候直接根据命令行命令来编译和创建程序,而且命令行的输出信息会显示在VC的信息框里。利用这个特性,只需要把编译驱动程序的一系列命令做成一个批处理文件,然后让makefile工程执行这个批处理文件就行了。

下面我们来看看怎样写这个批处理文件:

#----------从这里开始copy----------------------------------------------

if"%1"==""gotoInvalidParameter

ifnotexist%1\bin\setenv.batgotoSetenvNotFound

call%1\bin\setenv.bat%1%2
%3
cd%4
build.exe-c
gotoexit

:InvalidParameter
echoInvalidParameter.
gotoexit

:SetenvNotFound
echoCan'tfoundSetenv.bat.
gotoexit

:exit

#---------到这里copy截止--------------------------------------------

把上面的内容copy下来,paste到一个新建文件中并保存为build.bat(当然,你也可以使用任何你喜欢的名字)。

我想并不是每个人都用过批处理文件,所以在这里我对这个批处理文件罗嗦两句。这个批处理文件带有4个参数%1,%2,%3和%4。%1代表DDK的安装路径。通常DDK在安装后就会自动创建一个%DDKROOT%环境变量,这个变量就代表了DDK的安装路径。%2表示编译模式,调试模式为checked,发行模式为free。%3是源代码文件所在的驱动器名,例如C:,%4是源代码文件所在的完整路径,例如C:\MyDriver。
这个批处理文件首先检查参数%1是否为空,若不为空则检查%1\bin\setenv.bat文件是否存在,如果存在则执行setenv.bat来设置环境和编译模式。最后切换到源代码所在的目录并执行build.exe来编译和创建程序。

希望上面的解释能让你满意。如果我把你给说晕了,或者如果你压根不想了解这些批处理的细节,没关系,请继续往下看。


4.【创建makefile工程】

不要觉得我肤浅!这一节主要是为那些没有在VC上编写过makefile工程的人写的。

(1)运行VC,新建一个makefile工程

(2)在Debug的CommandLine栏输入build.bat%DDKROOT%Checkede:e:\MyDriver,
注意,你需要根据工程保存的位置来修改后面两个参数。

(3)在Release的CommandLine栏输入build.bat%DDKROOT%freee:e:\MyDriver。

(4)完成工程创建,并把我们在上面创建的那个build.bat文件放到工程目录下。


5.【测试】

现在可以测试上面的设置是否成功了,下面是我写的一个驱动版的“helloworld”程序:

//---------------------------------------------
//Function:DriverEntry
//
//Description:
//一个驱动版的helloworld,它做不了什么实际的事情
//
//Arguments:
//pDriverObject-PassedfromI/OManager
//pRegistryPath-UNICODE_STRINGpointerto
//registryinfo(servicekey)
//forthisdriver
//
//Returnvalue:
//NTSTATUSalways
//----------------------------------------------

#include

NTSTATUS
DriverEntry(
INPDRIVER_OBJECTpDriverObject,
INPUNICODE_STRINGpRegistryPath
)
{
KdPrint((“Helloworld!”));

returnSTATUS_SUCCESS;
}

把上面的内容copy下来,paste到MyDriver.c,然后添加到刚才新建的工程中。

下面还需要source和makefile两个配置文件。这两个文件名是固定的。对于makefile,它是为DDK准备的,把下面的内容copy到一个新建文件中,然后保存为makefile。记住:不要改变里面的内容!

#DONOTEDITTHISFILE!!!Edit.\sources.ifyouwanttoaddanew
#sourcefiletothiscomponent.Thisfilemerelyindirectstothe
#realmakefilethatissharedbyallthedrivercomponentsofthe
#WindowsNTDDK

!INCLUDE$(NTMAKEENV)\makefile.def

接下来是source文件

TARGETNAME=MyDriver
TARGETPATH=obj
TARGETTYPE=DRIVER
INCLUDES=.

SOURCES=MyDriver.c

其中SOURCES项指出源代码文件名,如果有多个文件,用逗号将它们隔开。

把source和makefile拷贝到工程目录下。

万事具备了!按下F7构建工程,在\objchk\i386目录下会生成MyDriver.sys