注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

inf文件的编写  

2010-12-07 19:26:57|  分类: 驱动编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

inf文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑。inf是不区分大小写的。

inf
中包含各节的含义:
1
 Version

  
每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现"signature=" CHICAGO""这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含"signature="Windows NT""这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。
包含在versionclass说明了设备的类型,常见的类型有: 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文件中。 

(以上解释内容来自http://www.roarsoft.net/dispArticle.asp?boardid=34&ArticleID=9200
这是inf文件的基本语法了。现在来看具体的inf文件的写法,我在这里写了一个最简单的helloworld驱动,其功能就是打印了一句“hello world”。可以通过dbgview观察。这个inf就是为了安装helloworld这个驱动。
下面是inf文件:

代码:

[Version]

signature       =  "$Chicago$"               

;这个是必须的,也可以换成WIndows95 nT,但是这个最好,它表示windows

Class    =  NULL      ;属于什么类型,这里是没有

ClassGuid   =  {00000000-0000-0000-0000-000000000000}  

;该类型的类型id,这里全填0

Provider   =  %PEDIY%                                      ;提供商的名称

DriverVer       =  01/02/2008,1.0.0.1                  ;驱动的版本号

 

[DestinationDirs]

HelloWorld.DriverFiles      = 12     ;%windir%\system32\drivers

;12代表%windir%\system32\drivers这个目录,意思就是将HelloWorld.DriverFiles中的内容拷贝到%windir%\system32\drivers

 

;;

;; Default install sections

;;

 

[DefaultInstall]

CopyFiles           = HelloWorld.DriverFiles

;CopyFiles是内建命令,表示拷贝将等号右边的节里面的文件拷贝到目的地

 

 

[DefaultInstall.Services]

AddService          = %HelloWorldServiceName%,,HelloWorld.Service

;AddService是内建命令,表示找右边来新建服务.

;%HelloWorldServiceName%这个是服务的名称,加%表示在string section中,HelloWorld.Service代表下面的节点名称

 

;;

;; Default uninstall sections

;;

 

[DefaultUninstall]

DelFiles   = HelloWorld.DriverFiles

;DelFiles表示卸载时删除文件

 

[DefaultUninstall.Services]

DelService = HelloWorld,0x200    ; Flags note to stop service first

;删除服务,在删除服务前,先停止服务

 

;

; Services Section

;

 

[HelloWorld.Service]

DisplayName      = %HelloWorldServiceName%      ;系统服务中显示的名称

Description      = %HelloWorldServiceDesc%      ;系统服务中描述的名称

ServiceBinary    = %12%\helloworld.sys  ;%windir%\system32\drivers\filespy.sys

ServiceType      = 1      ;SERVICE_KERNEL_DRIVER

StartType        = 3      ;SERVICE_DEMAND_START,手动启动

ErrorControl     = 1      ;SERVICE_ERROR_NORMAL

 

;

; Copy Files

;

 

[HelloWorld.DriverFiles]

helloworld.sys

 

 

;;

;; String Section

;;

 

[Strings]

PEDIY          = "看雪论坛"

HelloWorldServiceDesc = "看雪论坛--HelloWorld.Inf 演示"

HelloWorldServiceName = "HelloWorld"

HelloWorldRegistry    = "system\currentcontrolset\services\HelloWorld"

  评论这张
 
阅读(711)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018