设备驱动程序的安装和启动
来源:互联网 发布:软件支持用户数 编辑:程序博客网 时间:2024/04/30 00:19
Windows NT在引导的时候,通过扫描注册表构造驱动程序列表。这个列表既包括自启动的驱动程序,也包括需要手工启动的驱动程序。这个列表其实就是控制面板中设备Applet所列出来的所有设备。所有的设备驱动程序应该在注册表的HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/下有相应的键值。下面以vdisk为例来说明如何添加键值:
首先在HKEY_LOCAL_MACHINE/ System/ Current ControlSet/Services/下添加一个子项vdisk,注意这里的名称应该和你的驱动程序名称一致。例如驱动程序名称是vdisk.sys,那么这里的子项名称就是vdisk。然后在vdisk下添加以下键值:
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都启动之后才能启动成功。
3.驱动程序的Start值
上面注册表中驱动程序的Start值控制驱动程序在系统启动的时间。目前,Start可以取以下值,此外为该值留有扩展余地,以适用于新的要求:
(l)0x0 (SERVICE_BOOT_START):这个值指定本驱动程序应该由操作系统装入程序启动。一般的驱动程序不会采用本值,因为系统在这个时候几乎还没有启动,大部分系统尚不可用。
(2)0x1 (SERVICE_SYSTEM_START):该值表示在操作系统装入后但同时初始化它自己时启动驱动程序。
(3)0x2 (SERVICE_AUTO_START):该值表示在整个系统启动并运行后由服务控制管理器装入。
(4)0x3 (SERVICE_DEMAND_START):该值表示该驱动程序必须手工启动。可以通过控制面板的设备applet或者使用WIN32 API编程来启动。
(5)0x4 (SERVICE_DISABLED):表示本驱动程序被禁用。
注意在调试驱动程序的时候,最好将Start值设置为3来手工启动,这是因为如果设置为自动启动,而驱动程序在启动的过程中又发生了异常错误的话,可能导致系统不能启动。
首先要确定自己的驱动程序使用的Group名,系统有一些定义好的组名,对于当前系统存在的组名,可以观察注册表的/HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/ServiceGroupOrder/List的键值。例如该值可以设置为:
…
SCSI miniport
port
Primary disk
SCSI class
SCSI CDROM class
filter
boot file system
…
这里每一行都是一个Group名,一般来说某个驱动程序都属于某一个Group。系统启动时按照该List下组的顺序依次启动各组里的驱动程序。例如jbChanger和changerDisk都属于SCSI Class组。如果你觉得该表中的组名都不合适,可以在该List的适当位置中添加新的组名。
DependOnGroup值控制本驱动程序启动的时候必须先启动另一组的驱动程序,例如jbChanger和changerDisk的启动就依赖于SCSI miniport组。因此jbChanger和changerDisk的DependOnGroup值都为SCSI miniport。
4.修改注册表的方法
在注册表里这些值可以手工修改,也可以自己编程利用WIN32 API进行添加,同时也可以用ini文件的方式来添加。下面是一个ini(文件名为vdisk.ini)文件的例子。
/Registry/Machine/System/CurrentControl
Set/Services/VDisk
Type=REG_DWORD 0x00000001
Start=REG_DWORD 0x00000003
ErrorControl=REG_DWORD 0x00000001
Group=SCSI Class
Parameters
DriveLetter=N:
然后以vdisk.ini为参数运行REGINI.EXE。就会自动在注册表里添加相应的项。
在注册表里添加好这些项后,必须重新启动系统,这样所添加的设备驱动程序才能在控制面板的设备applet中列出来,再进行其他操作。
5.启动设备驱动程序
在添加修改好注册表后,重新启动系统,如果选择的Start值是0、1、2,如果一切正常,驱动程序就应该已经启动起来了。可以观察控制面板的设备applet中的设备列表。如果Start选择的是3,则可以直接启动。
- 设备驱动程序的安装和启动
- 驱动程序的安装和启动方法
- 设备驱动程序安装的重要文件
- 设备驱动程序安装的重要文件
- 设备驱动程序和服务
- usb设备无法启动,Windows 没有启动相关的设备驱动程序
- 设备驱动程序的种类
- 设备驱动程序的分类
- NT DDK的安装以及设备驱动程序的编译
- NT DDK的安装以及设备驱动程序的编译
- NT DDK的安装以及设备驱动程序的编译
- 安装各种未知设备驱动程序
- 如何安装一个设备驱动程序
- windows安装设备的驱动程序软件遇…
- 查找和配置设备驱动程序
- linux总线、设备和驱动程序
- Windows CE 显示设备的驱动程序和硬件
- Microsoft Windows CE 显示设备的驱动程序和硬件(转载)
- ADSL有望提速至100Mbps 澳洲小伙硅谷淘金
- 电脑应用118招,看完你就入门了
- 如何在网页中添加MSN和QQ等即时通讯的链接?
- Struts Validator验证器使用指南 (转)
- php jpgraph学习教程
- 设备驱动程序的安装和启动
- 小紫随笔
- 带#的临时表和带@的表有什么区别
- SQL Server 2005新特性 一
- “Error 1718. File was rejected by digital signature policy”(错误 1718。文件被数字签名策略拒绝)
- 向大家推荐一款功能强大且免费的杀毒软件:avast! 4 Professional Edition
- JavaScript的数组Array对象
- 项目质量控制
- DB2常用傻瓜问题1000问