首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图 ┆ 虚拟主机 ┆ 中文域名
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 软件开发 → C/C++编程 → 文章内容

WDM驱动程序设计之编译安装篇

作者:佚名  来源:网上收集  发布时间:2005-12-8 1:28:22
  编译设备驱动程序的方法

  安装DDK后,在DDK程序组下有Check和Free两个编译环境,Check环境用于编译带调试信息的驱动程序,Free则是编译正式发布版本的环境。通常情况下设备驱动程序的编译采用命令行的方式。通过一定的设置可以在VC ++的集成环境下编译。

  一般来说,成功编译一个最基本的设备驱动程序需要四个文件,第一个是驱动程序,即C语言源程序文件(例如vdisk.c,注意下面所有的例子都是以vdisk来说明);第二个是RC文件(例如vdisk.rc);第三个是sources文件;第四个文件是makefile.rc文件。sources文件和make文件类似,用来指定需要编译的文件以及需要连接的库文件。这三个辅助文件都很简单,在DDK samples的每个例程里都有三个这样的文件,依样画瓢就能理解它们的结构和意义。

  1.举例分析

  以下以vdisk程序为例,设vdisk.rc代码为:

  /vdisk.rc/

  #include

  #include

  #define VER_FILETYPE  VFT_DRV

  #define VER_FILESUBTYPE VFT2_DRV_SYSTEM

  #define VER_FILEDESCRIPTION_STR "SCSI VDisk Driver"

  #define VER_INTERNALNAME_STR "vdisk.sys"

  #define VER_ORIGINALFILENAME_STR "vdisk.sys"

  #include "common.ver"

  /end of vdisk.rc/

  设备驱动程序一般都使用Build实用程序来进行,Build只是NMAKE外面的一个外包装程序。Build本身其实相当简单,编译的大部分工作实际上由Build传递给NMAKE来进行。

  /SOURCES/

  TARGETNAME=vdisk

  TARGETTYPE=DRIVER

  TARGETPATH=$(BASEDIR)\lib

  TARGETLIBS=$(BASEDIR)\lib\\$(DDKBUILDENV)\scsiport.lib

  INCLUDES=..\..\inc

  SOURCES=vdisk.c vdisk.rc

  /end of SOURCES/

  注意SOURCES的文件名没有任何扩展名。

  # 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

  # end of makefile

  对所有驱动程序而言,makefile都是一样的,Microsoft也警告不要编辑这个文件,如果需要,可以编辑修改sources文件达到同样的效果。对于设备驱动程序,所使用的C编译器基本上无一例外地选用
VC++。

  2.编译的基本步骤

  (1)首先进入check或free编译环境,初始化DDK编译环境。

  (2)运行
VC安装目录下bin目录下的vcvars32.bat,初始化VC++编译环境。

  (3)运行Build.exe进行编译。

  ■设备驱动程序的安装和启动

  1.添加注册表中的键值

  Windows NT在引导的时候,通过扫描注册表构造驱动程序列表。这个列表既包括自启动的驱动程序,也包括需要手工启动的驱动程序。这个列表其实就是控制面板中设备Applet所列出来的所有设备。所有的设备驱动程序应该在注册表的HKEY_LOCAL_MACHINE\System\CurrentControl-

  Set\Services\下有相应的键值。下面以vdisk为例来说明如何添加键值:

  首先在HKEY_LOCAL_MACHINE\ System\ Current ControlSet\Services\下添加一个子项vdisk,注意这里的名称应该和你的驱动程序名称一致。例如驱动程序名称是vdisk.sys,那么这里的子项名称就是vdisk。然后在vdisk下添加以下键值:

名称
数据类型
说明
TypeREG_DWORD驱动程序的种类
StartREG_DWORD驱动程序的起始启动时间
ErrorControlREG_DWORD驱动装入失败的错误处理
GroupREG_SZ驱动程序的组名
DependOnGroupREG_MULTI_SZ所依赖的其他驱动程序
TagREG_BINARY同组内驱动程序装入顺序
Parameters(key)驱动程序特定的参数键

  Type值为1表示内核模式驱动程序;为2表示文件系统驱动程序。

  ErrorControl值为0表示日志记录错误并忽略;值为1表示日志记录错误并显示一个对话框;值为2表示日志记录错误,并用最后的正确配置重新启动;值为3表示日志记录错误,如果已经使用过正确配置,返回失败。

  在任何一个设备驱动程序中,上表中的前三项参数都是必需的。

  2.控制驱动程序的装入次序

  有时候控制多个驱动程序的装入次序是必要的。例如一套驱动程序中包括三个驱动程序,分别是jbChanger.sys,changerDisk.sys和vdisk.sys。jbChanger和changerDisk是两个SCSI类驱动程序,它们都依赖SCSI小端口(mini port驱动程序),同时changerDisk必须在jbChanger启动之后启动。vdisk是虚拟的磁盘驱动程序,它必须在jbChanger和changerDisk都启动之后才能

[] [返回上一页] [打 印]
  • 上一篇文章:用控件聚合技术为FlexGrid增添PickList功能
  • 下一篇文章:VC编程中如何操作数据库中的图像字段

  • 相关文章:
  • WDM驱动程序设计之编译安装篇
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号