黑道风云粤语在线观看:用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
最近有很多人问我怎么样在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
用VC编译驱动程序
VC编译语法解释
vc++6.0 编译JRTPLIB
WDM驱动程序设计之编译安装
最常见的20种VC++编译错误信息 - 科学堂
VC知识库文章 - COM 组件设计与应用(七)——编译、注册
VC++ 6.0 编译 opencv1.0 中 cvaux.dll的3个错误原因
VC经典的编译错误解决办法(转载) - jacky的日志 - 网易博客
用gcc编译C++程序
vc是什么,有什么用
VC用ADO访问数据库全攻略
用 VC 建立 Windows 服务程序
编译 运行
sersync 编译
编译原理
电脑驱动程序全面应用
显示器驱动程序的作用
如何安装驱动程序
NDIS中间层驱动程序--Thinking
linux_设备驱动程序
何为驱动程序
何为驱动程序
Linux驱动程序开发
如何更新显卡驱动程序