• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
VisualStudio构造WDM设备驱动程序
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
VisualStudio构造WDM设备驱动程序
软件发布 VisualStudio构造WDM设备驱动程序
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | C/C++教程 | VisualStudio构造WDM设备驱动程序

VisualStudio构造WDM设备驱动程序

 

添加时间: 2006-2-12 7:55:48  作者: C++教程  阅读次数:1011   来源: http://www.d9soft.com

 

 

            WDM(Win32 Driver Model),即Win32驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。

  目前,用于WDM驱动程序开发的主要工具是Microsoft公司提供的DDK(Driver Development Kit),其中包含许多内核态函数及数据结构的定义;包含很多非常有用的调试、测试及构造工具,还提供了许多驱动程序实例和丰富的帮助文档。此外,开发人员通常都会在Visual Studio集成开发环境中创建、编辑设备驱动程序项目。

  在Visual Studio中创建了程序的工程之后、必须经过编译、链接才能构成程序可执行文件。但由于Visual Studio不能用于内核程序的构造,所以常常需要退出编辑环境,使用DDK中提供的专用工具Build来构造设备驱动程序。

  为了提高驱动程序的开发效率,简化驱动程序的构造过程,我们可以通过改变设置,从Visual Studio直接构造WDM驱动程序。

  本文将以一个简单的Windows设备驱动程序WdmTest为例,介绍其创建和构造过程。

  系统设置

  1、DDK安装

  编写WDM设备驱动程序之前需要安装Microsoft的驱动程序开发工具包DDK。

  安装DDK后,在DDK程序组下有Check和Free两个编译环境,Check环境用于编译带调试信息的驱动程序,Free则是编译正式发布版本的环境。

  2、环境变量设置

  DDK安装成功后,需要为其设置环境变量。

  首先,设置一个叫做DDKROOT的环境变量,它指向Windows2000 DDK或Windows98 DDK的基目录。

  然后,设置一个叫做WDMDIR的环境变量,它指向驱动程序的基目录。

  在Windows98平台下,把这些环境变量添加到AUTOEXEC.BAT文件中;在Windows2000平台下,在控制面板“系统”程序的“高级”标签中的“环境变量”中设置环境变量。

  WDM驱动程序组成

  一个最基本的设备驱动程序应该包含2部分:驱动程序源文件和驱动程序构造文件。

  表1列出了WdmTest使用的所有源文件,表2列出了WdmTest使用的所有构造件。

----表1 WdmTest源文件----
Init.cpp 进入和卸载代码
Dispatch.cpp 主要的IRP分发例程
Pnp.cpp 即插即用和代码
Power.cpp 电源管理代码
WdmTest.rc 版本资源
WdmTest.h 驱动程序头文件
GUIDs.h GUID定义
Ioctl.h IOCTL定义
resource.h 资源编辑器头文件
----------------------------------------
-----WdmTest构造文件-----
SOURCES build指定
makefile 标准makefile
MakeDrvier Makefile项目批处理文件
----------------------------------------
驱动程序的构造

  DDK Build命令行实用程序是构造驱动程序的主要工具,使用正确的编译器和连接器设置,通过调用nmake实用程序来构造驱动程序。Build把构造进展的详细信息和错误结果显示到标准输出。Build本身其实相当简单,编译的大部分工作实际上由Build传递给nmake来进行。
由于Build使用的编译和连接工具与Visual Studio相同,可以从Visual Studio中激活Build,因此可以设置VC++,从Visual Studio直接构造WDM驱动程序。这将使驱动程序的编辑与构造在相同的环境中进行,从而使其开发更加方便。

  采用的方法是使用一个Makefile项目,它激活Build命令行实用程序构造驱动程序。所有必要的构造文件必须正确设置,包括SOURCES文件、MakeDrvier.bat、makefile文件。

  1、SOURCES文件

  Build在当前目录中查找一个叫做SOURCES的nmake宏文件,了解驱动程序构造的详细信息。WdmTest项目的SOURCES文件如下:

TARGETNAME=WdmTest
TARGETTYPE=DRIVER
DRIVERTYPE=WDM
TARGETPATH=SYS
INCLUDES=$(BASEDIR)\inc;
SOURCES= Init.cpp \
Dispatch.cpp \
Pnp.cpp \
Power.cpp \
WdmTest.rc

  TARGETNAME表示程序的目标名为WdmTest.sys;TARGETTYPE和DRIVERTYPE表示程序是一个WDM驱动程序,TARGETPATH表示程序在SYS子目录中构造;INCLUDES表示DDK inc目录被添加到头文件的搜索列表中;SOURCES宏指定要编译的文件列表。

  2、makefile文件

  makefile文件激活DDK inc目录中的标准构造文件makefile.def。WdmTest项目的makefile文件如下:

!INCLUDE $(NTMAKEENV)\makefile.def

  3、MakeDrvier.bat文件

  MakeDrvier.bat是一个批处理文件,它将调用DDK的setenv命令。setenv.bat文件存在于DDK的bin目录中,用于设置构造过程中的环境变量,同时调用bin目录中的其他批处理文件。

  MakeDrvier.bat至少要传递4个参数:DDK基目录(%1)、源驱动器(%2)、源目录(%3)和构造类型(%4)(“free”或“checked”),任何其他的参数(%5……)直接传递给Build。

  MakeDrvier.bat首先检查setenv.bat是否存在,然后调用etenv命令为build目标正确设置环境变量,改变目录为源驱动器和源目录,并最后调用build。

  MakeDrvier命令文件的屏幕输出出现在Visual Studio Output窗口中。

  WdmTest项目的MakeDrvier.bat文件如下:

@echo off
if not exist %1\bin\setenv.bat goto warning
call %1\bin\setenv %1 %4
%2
cd %3
build -b -w %5 %6 %7 %8 %9
echo OK MakeDriver
goto exit
:warning %1
echo Warning %1\bin\setenv.bat not exist
goto exit
:exit

  4、Makefile构造环境

  当创建新的Makefile项目时,Visual Studio缺省提供2个build配置:“Win32 Debug”和“Win32 Release”。为了和DDK配置对应,一般习惯通过“编译-配置”菜单删除这两个配置,并增加2个新的配置:“Win32 Checked”和“Win32 Free”。
对于“Win32 Free”配置,按表3所示设置项目的设定;对于Win32 Checked”配置,在创建命令行中将“free”改为“checked”。

  -----表3 Win32 Free配置设置-----
  创建命令行 MakeDriver %DDKROOT% C: %WDMDIR%\WdmTest\sys free
  重建全部选项 -nmake /a
  输出文件名 WdmTest.sys
  创建命令行运行MakeDrvier批处理文件,使用DDKROOT和WDMDIR两个环境变量 。
  ----------------------------------------

  5、驱动程序的构造与编译

  驱动程序编辑完成后,在Visual C++中直接运行“编译”菜单中的“构造 WdmTest”即可进行编译构造驱动程序。

  若有错误,则双击错误提示项即可迅速回到源代码中修改。若无错误,则产生驱动程序Wdm Test.sys存放在自由或检查构造目录中。

  结束语

  综上所述,介绍了在Visual Studio中,通过建立Makefile项目,激活“DDK Build”命令行实用程序构造WDM驱动程序的方法。这种方法使我们可以通过改变VC++的设置,从Visual Studio直接构造WDM驱动程序,从而提高驱动程序的开发效率,简化驱动程序的构造过程。

 

 

 

上下文章:

 

上一篇文章: 下一篇文章: Visual C#实现MVC模式简要方法

相关文章:

  • AV杀手变种强行关闭杀度软件与下载恶意程序
  • Oracle外部程序的触发小结
  • 开发技术:调查您的应用程序需求
  • Oracle外部程序的触发小结
  • 开发技术:调查您的应用程序需求

相关软件:

  • 华娱网电影程序 v1.0版
  • 武汉娱乐网翻唱程序
  • 极限音乐网全站程序
  • 林州数码港FLASH程序
  • 中国电台网web程序
  • 做好娱乐免费电影程序 v1.0

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • C/C++作用域引申出的编码规范
  • 程序宝典:C++学习感想
  • C语言:黑客学员必修课(一)
  • C语言:黑客学员必修课(二)
  • 使用多线程实现数据实时采集
  • C++编程中的四个调试小技巧
  • C语言程序设计基础之联合
  • 学C++不得不看的一篇文章
  • C,曾经的程序员梦
  • 水滴石穿C语言之可变参数问题

C/C++教程阅读排行

  • 学C++不得不看的一篇文章
  • C语言:黑客学员必修课(一)
  • 水滴石穿C语言之可变参数问题
  • 程序宝典:C++学习感想
  • 我的Visual C++入门之路
  • 初学者学习C++的50条忠告
  • C++中的struct专题研究
  • C++箴言:只要可能就用const
  • 强大的语言——C入门
  • C++编程中的四个调试小技巧

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有