Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >驱动开发学习笔记(4-1)–INF文件-1

驱动开发学习笔记(4-1)–INF文件-1

作者头像
obaby
发布于 2023-02-28 01:22:38
发布于 2023-02-28 01:22:38
1.4K00
代码可运行
举报
文章被收录于专栏:obaby@marsobaby@mars
运行总次数:0
代码可运行

INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候,INF文件将会自动调用。而在其他场合下,则需要在INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。

在C:/Windows/INF文件夹中存放有大量的INF文件。该文件夹一般处在隐含状态,如果你想查看该文件夹,可选择“查看→文件夹选项→查看”,然后在“文件和文件夹”选项下选择“显示所有文件”。

解剖INF文件的结构

INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等。INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的。

*规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。

*规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature=”CHICAGO””的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。

*规则三:INF文件对大小写不敏感。

*规则四:“;”号后面的内容为注释。

*规则五:如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写为多行。 明白了INF文件的规则后,让我们一起来解剖INF文件的结构。 1.Version节 每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature=”CHICAGO””这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含“signature=”Windows NT””这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。 另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,通常是网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)。2.Manufacturer节 该节中的条目主要是描述INF文件可以识别的所有硬件设备,其中包含有设备的生产厂家,以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”,这个大家都不会陌生吧,是显卡的生产商。 3.SourceDisksNames节 该节主要指明安装文件所在的介质。如:“1=”ATi Drivers Release CD””表明所有驱动程序都在零售版的CD盘上。 4.SourceDiskFiles节 驱动程序文件列表及被安装的位置,该节必须结合[SourceDisksNames]节才能知道具体的位置。如“atinbtxx.sys=1”,则你必须到[DestinationDirs]节去查看“1”具体代表那个位置。 5.DestinationDirs节 INF文件会指示安装程序在安装的过程中,将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。 6.DefaultInstall节和Install节 在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下,首先执行[DefaultInstall]节,该节指定了要复制或删除的文件,注册表的更新,INF文件的更新等等信息,同时又包含指向其他节的指针。 7.String节 这一节中定义了字符串变量,当某些字符串频繁地出现在INF文件中,为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF文件中。 读懂INF文件 下面让我们以ATi显卡的用于Windows XP的WDM驱动程序为例来说明一下INF文件的具体含义,由于INF文件往往很长,为了说明方便,我们删除了一些大部分的信息,仅保留一个INF文件的结构,如图1所示。

INF文件精彩实例

光说不练不行,下面让我们来看几个INF文件的典型应用。

1.打开“锁”定的注册表

第一步:打开记事本程序,输入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
[DeleteMe]
HKCU,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”
HKLM,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”

输入完毕,另存为UNLOCK.INF,名字任取,扩展名必须是INF。 第二步:在“UNLOCK.INF”文件上右键单击,在弹出的右键菜单中点选“安装”,如图2所示,被锁的注册表即会应声而开。

2.巧妙利用INF文件自动备份重要的文件

大家都知道,注册表是Windows操作系统的命根子,因此,系统启动时会自动运行注册表检查程序,自动更新备份注册表文件。在系统盘的Windows目录中有一个“Scanreg.ini”,Scanregw.exe每天所执行的默认操作都是在它的控制下运行的,我们可以利用这一原理实现对我们重要文件的备份。

第一步:打开资源管理器,找到该文件,用记事本程序打开它。我们可以清楚地看到共有五个参数,如图所示。

(1)Backup 这个参数值可为0或1,默认为1。值为1表示在每天首次启动时扫描注册表,值为0表示不进行任何注册表操作。

(2)Optimize 这个参数值可为0或1,默认为1。值为1表示每次扫描注册表时删除注册表中的多余数据,从而优化注册表数据,值为0表示不进行删除操作。

(3)ScanregVersion=0.0001 程序版本说明。

(4)MaxBackupCopies 这个参数用来设置建立的备份文件的个数,值为5至99中的任一个数,默认值为5,即最大可建立五个备份文件,为更好的保护系统,一般来说设置10个左右为宜。

(5)BackupDirectory 这个参数用来设置备份文件存放的目录,默认存放目录为Windows\Sysbckup,注意这里填写的必须是完整路径。

(6)Files 在“Scanreg.ini”的最后有如下注释内容“;Files=[dir code,]file1,file2,file3”,将其前面的注释符号“;”去掉,你就可以自己DIY需要注册表检查程序备份的重要文件了。默认情况下,注册表检查程序创建注册表备份文件时,会将“system.dat”、“system.ini”、“user.dat”和“win.ini”四个文件保存在“cab”压缩文件中,如果你需要将其他重要的系统配置文件添加到此压缩文件中,可在“Files=”后面输入“[目录代码],文件名1,文件名2,文件名3”,文件名之间以逗号相隔,目录代码含义如下:

10 代表C:\Windows目录

11 代表C:\Windows\System目录

30 代表C盘根目录

31 代表Windows系统所在盘的根目录

例如要把Autoexec.bat和Config.sys两个文件放到备份文件中,可设置参数为“File=30,config.sys,autoexec.bat”。 3.硬盘(U盘)也需个性化

第一:给硬盘(U盘)DIY一个可爱的图标

我们首先将硬盘的生硬图标替换为我们喜欢的图标,给硬盘披上美丽的彩衣。首先准备一图标文件,你可以用图标制作程序制作自己的图标文件,也可以使用现成的图标文件,最好是保存到硬盘某一个分区的根目录下。接着打开记事本程序,录入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[autorun]
ICON=******.ICO

其中“******”是图标文件的路径及图标文件名,请自行修改为具体的图标文件的路径及图标文件名。录入完毕,另存为“Autorun.inf”,并将其剪切到某一个你欲扮酷的分区的根目录下。

第二:让硬盘能歌善舞

想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后,如图3所示,就自动打开音乐播放程序,开始播放音乐文件,让动听的音乐时刻环绕在你的左右。心动了吧,其实十分简单,Come On。

接着在“Autorun.inf”文件中录入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
OPEN=D:\Program Files\foobar2000\foobar2000.exe d:\qs.fpl

其中“D:\Program Files\foobar2000\foobar2000.exe”是笔者喜爱的播放器Foobar2000的具体位置,如果你用的是Winamp或其它的播放器,请替换为具体的播放器所在的位置,“d:\qs.fpl”是Foobar2000播放器的播放列表文件,你也可以替换为某一个具体的音乐文件所在的路径。如果你用的是Winamp则播放列表文件应是“*.m3u”。 利用此方法也可以设置当双击硬盘分区时自动播放影视文件。 4.无人值守安装Windows 98

在Windows 98安装光盘中有一个Batch工具,可以制作用于无人值守安装的脚本,即生成一个包含安装Windows 98时需要和安装向导进行交互的各种信息的INF文件——Msbatch.inf。

首先找到位于Windows 98安装光盘“/tools /reskit/batch”目录中的“setup”程序图标安装Batch98工具。

接着,运行Batch工具,按照向导提示生成“msbatch.inf”文件,并将该文件保存到软盘中。具体的生成方法请参考有关资料,这里不再赘述。

当需要重新安装Windows 98时,用启动盘进入到DOS提示符下,将保存有“msbatch.inf”文件的软盘插入软驱,将Windows 98安装光盘插入光驱,在DOS提示符后键入如下命令:“x:/win98/setup a:msbatch.inf”,回车后即可。其中“X”为光驱和盘符。

5.将屏保请进右键菜单

当我们有事暂时离开一会儿,利用设有密码的屏幕保护程序可以保护我们当前的操作不被他人偷看。但是,在默认的设置中,屏幕保护程序最快也要在1分钟以后才能够启动,那么怎样才能快速激活屏幕保护程序呢?

最常见的方法是在桌面上建立一个启动屏保的快捷方式,在需要时双击即可启动。另外,我们还可以将屏保请进右键菜单!

第一步:打开记事本程序,录入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\pingbao",,,"屏幕保护"
HKCR,"CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\pingbao\COMMAND",,,"ssstars.scr /S "%1""

录入完毕,经检查无误后,另存为“PingBao.inf”,文件名可任取,扩展名必须是INF。

第二步:在“PingBao.inf”文件上右键单击,在弹出的右键菜单中点选“安装”。

第三步:当需要运行屏幕保护的时候,回到桌面上,在“我的电脑”图标上点击右键选择“屏幕保护”选项,如图4所示。点击一下试试,是不是立即启动屏幕保护程序了。

注意:其中的“ssstars.scr”为欲启动的屏幕保护程序的文件名,请用你喜欢的屏幕保护程序文件来替换;如果你点选右键菜单中的“屏幕保护”选项后,没有反应即没有启动屏幕保护程序,请将文中的“/S “%1″”修改为“”%1” /S”即可。 6.将磁盘管理程序请进右键菜单

对磁盘进行定期的整理是我们经常要做的一项工作,每次都是按部就班地点击“开始→程序→附件→系统工具→磁盘碎片整理程序”,然后在弹出的选择驱动器窗口中选择要整理的分区,再点击“碎片整理”按钮开始整理。这样比较麻烦,我们可以试一试将磁盘管理程序添加到右键菜单。

第一步:打开记事本程序,输入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=addMe
[AddMe]
HKCR,"\Drive\shell\磁盘整理\command",,,"defrag.exe %1"

输入完毕,另存为AddDefrag.INF,名字任取,扩展名必须是INF。

第二步:在“AddDefrag.INF”文件上右键单击,在弹出的右键菜单中点选“安装”。

第三步:以后要进行磁盘整理,只需打开资源管理器,在相应的盘符上点右键,在弹出的右键菜单中选择“磁盘整理”即可(如图5)。

7.解决ATi显卡无法安装公版驱动的问题

有些第三方的ATi显卡无法安装公版的驱动程序,造成该问题的原因是多方面的,如有些第三方厂商在硬件上做了改动,采用了非公版的PCB设计和BIOS等,这都可能会导致无法安装公版驱动程序的情况发生。当你的显卡遇到这个问题该怎么办呢?

首先将你下载的ATi显卡驱动程序解压缩到硬盘任一目录下,在“ATiDrive”子目录中找到会列出所有的inf文件,ATiixpxx.inf——适用于Windows XP,ATii9xxx.inf——适用于Windows 9x ,ATii2kxx.inf适用于Windows 2000 。

接着打开操作系统对应的INF文件,通过菜单栏的编辑——查找功能,查找“ati.mfg”字符串,随后会看到“RADEON 7000、RADEON 7200、RADEON 7500、RADEON 8500”等条目信息,将其删除。

接着查找与你的显卡匹配的字符串,如笔者的RADEON 7500显卡,就查找“RADEON 7500”,找到如下信息:“RADEON 7500=ati2mtag_RV200,PCI\VEN_1002&&&&DEV_5157&&&&SUBSYS_013A1002”,将“&&&&SUBSYS_013A1002”删除,保存文件。

现在再试试,看问题是不是解决了。

8.在命令行下安装INF文件

通常情况下,我们都是在Windows环境下安装INF文件的,但是假如有一天,你需要在命令行运行INF文件该怎么办呢?

在命令行提示符后输入“ rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 INF文件所在的路径及文件名.inf ”,回车后即可安装相应的INF文件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009年10月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
驱动开发学习笔记(4-2)–INF文件-2
.INF是 Device Information File 的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用 .INF文件来安装的。.INF文件从 Windows3.X 时代就开始大量被使用了。 .INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然 .INF 只是纯文本文件,但是当我们在文件管理器explorer对 .INF文件按鼠标右键後,如图inf右键.PNG,在右键菜单上就会出现“安装I”命令,这是因为微软公司已在其操作系统 Windows 中内置提供了 Setup API(可以解释.INF脚本文件),我们只需用文本编辑软件编写 .INF文件,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使用 .INF文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。 可以用 .INF文件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的,本文的目的就是介绍 .INF文件的功能、结构、并提供了几个 事例来说明如何用.INF文件,如何扩展.INF文件的用途,比如制作绿色软件,仅供参考。
obaby
2023/02/28
1.2K0
玩转Autorun.inf
我们已经知道可以利用Aurorun.inf来指定光盘自动加载的图标和运行的文件,其实Autorun.inf的用处可大了,下面就向大家详细介绍有关Autorun.inf的应用。
深蓝studyzy
2022/06/15
8350
windows中常见后门持久化方法总结
当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要的一部分,下面我来总结一下windows下常见的后门持久化的方法
Power7089
2020/09/28
2.1K0
windows中常见后门持久化方法总结
常用电脑资料速查
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
2.4K0
Windows Longhorn_Windows优化
一、系统优化设置。 1、删除Windows强加的附件: 1) 用记事本NOTEPAD修改/winnt/inf/sysoc.inf,用查找/替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将“替换为”框设为空。并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运行“添加-删除程序”,就会看见“添加/删除 Windows 组件”中多出了好几个选项;这样你可以删除好些没有用的附件 2、关掉调试器Dr. Watson; Dr.Watson是自带的系统维护工具,它会在程序加载失败或崩溃时显示。运行drwtsn32,把除了“转储全部线程上下文”之外的全都去掉。否则一旦有程序出错,硬盘会响很久,而且会占用很多空间。如果你以前遇到过这种情况,请查找user.dmp文件并删掉,可能会省掉几十M的空间。这是出错程序的现场,对我们没用。然后打开注册表,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug子键分支,双击在它下面的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就彻底来取消它的运行了。 另外蓝屏时出现的memory.dmp也可删掉。可在我的电脑/属性中关掉BSOD时的DUMP 3、关闭“系统还原”:鼠标右健单击桌面上的“我的电脑”,选择“属性”,找到“系统还原”,如果你不是老噼里啪啦安装一些软件(难道你比我还厉害??),你也可以去掉,这样可以节省好多空间。
全栈程序员站长
2022/11/01
2.2K0
驱动开发:文件微过滤驱动入门
MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单,多数IRP操作都由过滤管理器(FilterManager或Fltmgr)所接管,因为有了兼容层,所以在开发中不需要考虑底层IRP如何派发,更无需要考虑兼容性问题,用户只需要编写对应的回调函数处理请求即可,这极大的提高了文件过滤驱动的开发效率。
王瑞MVP
2023/06/19
4840
驱动开发:文件微过滤驱动入门
8.4 Windows驱动开发:文件微过滤驱动入门
MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单,多数IRP操作都由过滤管理器(FilterManager或Fltmgr)所接管,因为有了兼容层,所以在开发中不需要考虑底层IRP如何派发,更无需要考虑兼容性问题,用户只需要编写对应的回调函数处理请求即可,这极大的提高了文件过滤驱动的开发效率。
王瑞MVP
2023/12/02
9961
8.4 Windows驱动开发:文件微过滤驱动入门
硬件资料和软件资料_电脑硬件检测工具哪个好
2. BIOS报警声意义 3. BIOS自检与开机故障相关问题 5. 计算机几个常见指标的意义 6. 显卡GPU参数 7. 显示卡常见故障全面解决 8. 集成声卡常见故障及解决 9. 显示器经典故障以及处理办法 10. AMI主板代码大全(BIOS-ID)
全栈程序员站长
2022/11/01
4.7K0
Windows 罕见技巧全集3
1.重新启动Windows 点“开始”|“关闭系统”以后,在“关闭Windows”对话框中,按住Shift键不放, 用鼠标点击“重新启动计算机”,再点“是”按钮,释放Shift键。这样,就重新启动Windows界面,而不是重新启动计算机。 2. 跳过开机画面 启动时按 esc 即可,或者干脆一点,修改 msdos.sys在options段落加入logo=0。
py3study
2020/01/08
1.6K0
驱动开发(WDM)
winObj(symbollink设备名称的别名,各个节点查看)和devicetree等工具可查看,下载地址:http://www.osronline.com/
sofu456
2020/10/26
1.4K0
Windows中常见后门持久化方法总结
当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要的一部分,下面我来总结一下windows下常见的后门持久化的方法
HACK学习
2019/10/09
2.9K0
Windows中常见后门持久化方法总结
windows驱动开发教程_windows内核驱动开发
因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结。
全栈程序员站长
2022/09/27
1.9K0
xp的终极优化
为了达到这个目的,我们主要从四个方面入手: 1、减少磁盘空间占用 2、终止不常用的系统服务 3、安全问题 4、另外一些技巧
全栈程序员站长
2022/11/10
5.6K0
64位内核开发第十四讲,MiniFilter文件过滤框架以及安装方式
MiniFilter是微软为我们开发的一个新的驱动,称为过滤管理器.(Filter Manager或者 fltmgr).这个驱动主要作用就是如果有文件操作可以通知我们.
IBinary
2022/05/10
2.7K0
64位内核开发第十四讲,MiniFilter文件过滤框架以及安装方式
如何把文件复制到桌面_如何把桌面文件放一起
电脑是现在最常用的工具之一,有些用户遇到了桌面文件无法删除问题,想知道如何解决,接下来小编就给大家介绍一下具体的操作步骤。
全栈程序员站长
2022/11/01
2.8K0
怎样制作GHOST系统盘
制作Windows XP万能克隆镜像 战前分析:对于Windows XP,制作万能克隆时的一个重要问题就是系统激活,因为Windows XP为了防止盗版,采取了激活机制,当硬件发生改变时,系统就会要求重新激活,所以如果想做万能克隆,建议使用不需要激活的Windows XP版本,如VOL大企业授权版本。 1.安装系统 正常安装Windows XP到C盘(注意不要安装到其他分区,否则会比较麻烦),并安装好系统安全补丁(如冲击波补丁等)和常用软件,注意安装软件时只安装那些常用的软件,不要什么都装。建议安装的
脑洞的蜂蜜
2018/02/01
9.6K0
基于WDM的专用USB设备的驱动程序开发[通俗易懂]
1引言 目前对于诸如USB鼠标、键盘等这样的计算机标准外设,Windows系统已经提供了标准的驱动程序,用户无需再进行任何开发工作。而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。为了实现对硬件设备的访问和控制,必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。驱动程序通常被认为是操作系统的组成部分,所以,开发驱动程序有严格的规范,被认为是“计算机高手”的工作。而利用DDK进行基于WDM(Win32 Driver Model)驱动程序开发,使驱动程序的开发变成了一项比较简单的工作。 2 Win32驱动程序模型 USB设备驱动程序必须符合由Microsoft为Windows 98及其后版本所定义的Win32驱动程序模型(Win32 Driver Model,WDM)规格。这些驱动程序称为WDM驱动程序,扩展名为.sys。 WDM定义了一个基本模型,处理所有类型的数据。例如,USB类驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。有了对所有设备类型共同的核心驱动程序模型,使驱动程序开发人员更容易从一种类型的设备移动到另外一种类型的设备上去。而且它也意味着驱动程序模型的内核实现尽可能是固定的。 USB是使用标准Windows系统USB类驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。USBD.sys就是Windows系统中的USB类驱动程序,它使用UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。URB允许发出几个功能调用给USB系统。用户态USB实用程序也可以发出几个普通IOCTL给USB设备,目的仅仅是得到连接设备的信息。 3.1函数驱动程序 函数驱动程序(function driver)让应用程序与USB设备,通过API函数来沟通。这些API函数属于Windows的Win32子系统,Win32子系统同时也管理着执行应用程序。函数驱动程序与较低级的总线驱动程序沟通,总线驱动程序控制着硬件。 图1是应用程序与各个驱动程序,如何一起完成USB通信的结构图。当设备或子类别的要求超过类别驱动程序的能力时,会有辅助的过滤器驱动程序来类别驱动程序的能力。一个上层的过滤驱动程序位于类别驱动程序的上方。这样,从客户应用程序传来的要求,会先经过上层的过滤驱动程序,然后才传给类别函数驱动程序。一个下层的过滤驱动程序位于类别驱动程序和总线驱动程序之间,如图1。类别驱动程序会将要求传给下层的过滤驱动程序,然后再传给总线驱动程序。 图1应用程序与驱动程序完成USB通信的结构 通用串行总线驱动程序(USBD.SYS)是USB系统中负责管理通用串行总线的工作,位于主机上的一个软件。USBD负责控制所有的USB协议操作和高层的中断处理控制。在Windows98及以上版本中,Microsoft定义了一个新的设备驱动程序模型,称之为Windows设备驱动程序模型(WindowsDriver Model或WDM)。 USB客户应用程序也是一种设备驱动程序,通过定义的一个称之为USB接口的层间接口来访问其下方的USB软件。应用程序正是通过这些USB客户软件来实现与USB设备之间的通信。 针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。并提供了对于这些函数具体使用的参考文档。 3.2 USBDI的IOCTL 为了编写USB设备驱动程序,通常还要在源代码中包含DDK所提供的几个头文件。这些头文件在Windows98下存放在/98DDK/inc/win98目录中,在Windows 2000下存放在/NTDDK/inc/win2000目录中。这些头文件的用途可以总结如下: usb100.h 定义了在USB设备驱动程序设计中所要用到的各种常量和数据结构。 Usbdi.h USBDI例程,其中包括对USBD和USB设备驱动程序通用的数据结构,适用于内核和用户模式。 Usbdlib.h URB构造和各种例程,定义了USBD所输出的服务,适用于内核和用户模式。 Usbioctl.h 给出了对IOC
全栈程序员站长
2022/09/27
1.8K0
0x00000000该内存不能为read
一般来说,电脑硬件不easy生病。内存故障的可能性并不大(非你的内存真的是杂牌的一塌徒地)。主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存。3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存。从而出现不兼容的情况。5。超频带来的散热问题。你能够使用MemTest 这个软件来检測一下内存,它能够彻底的检測出内存的稳定度。
全栈程序员站长
2022/07/18
2.1K0
Windows 7 操作系统
Windows 7 的主要特性有:  更简单  更安全  更好的连接  更低的成本
青灯古酒
2023/10/16
7050
win8最流畅的设置方法_Windows 12
1)关闭系统属性中的特效,这可是简单有效的提速良方。点击开始→控制面板→系统→高级→性能→设置→在视觉效果中,设置为调整为最佳性能→确定即可。
全栈程序员站长
2022/11/01
3.7K0
相关推荐
驱动开发学习笔记(4-2)–INF文件-2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验