青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

elva

驅動程序安裝-INF

當用戶剛插上設備或啟動引導(Boot)時,設備是剛剛物理存在于機器上時,總線驅動應自動地,動態的檢測,識別硬件的變化。這時,就要有一個識別設備,安裝驅動的INF文件。

所謂文件是指用一個共同的符號名稱作為代表,若干個邏輯記錄構成的信息集合或目的,形式和內容的表示上彼此相似的一些信息項的集合。簡單的說,就是具有一定名稱的一組相關數據的集合。

所謂INF文件,就是以INF為擴展名的文本文件,他控制與驅動安裝程序有關的大多數活動。

因為這個INF文件抽象了設備的上層建筑,含有安裝驅動所有的必需的信息,所以它要由驅動開發人員隨驅動一起提供,來告訴操作系統那些文件需要復制到用戶的硬盤上,應添加或修改哪個注冊表等。簡單的說,INF文件就是機器的參考文件(Information File)。

INF文本文件與Windows 3XINI文件很類似,INF文件分為幾節,每節包括一項或幾項。每節與安裝過程中的某一步相關:比如說,某一節是關于文件拷貝的。某一節是關于如何添加注冊表項等等。作為一個開發者,你可以通過任何文本編輯器創建生成INF文件。Microsoft還在DDK中提供了INFEDIT工具,使擁護可以很方便的編輯INF 文件(如果實例用INFEDIT,請參閱DDK)。

INF文件可以支持很復雜的安裝腳本,但是大多數的開發者只愿意使用處理一些最基本的腳本。一個基本的安裝腳本應該包括:

1鑒定硬件設備

2把驅動程序從安裝盤上拷貝到系統盤上去

3鑒定硬件設備資源的需求

4當硬件設備被仿真是,就在注冊表中加上DevLoader一項

INF文件通常與磁盤或光盤上的硬件驅動程序一起提供。INF文件的結構和內容由驅動程序創作者決定

1.          舉例說明

下面舉例說明有關INF的基本特征和內容,以便更好的理解。

[Version]

Singnature=$windowsNT$                 //選擇版本

Class=Unknown                          //系統定義用戶指定的類名

Provider=%ABCD%                        //提供商

DirverVer=11/15/2001                    //

CatelogFile[.Ntetc]          //包含WHQL數字簽名的目錄說明文件。

 

[Strings]

ABCD=”me, the writer”       //定義宏

[SourceDisksNames]     //源代碼盤或發行盤的描述,目錄和打包文件

L=”Ggdriver directory”…obj\i386\

[SourceDisksFiles]      //和打包文件

Ggdriver.sys=l,obj\i386\some\

[DestinationDirs] //復制缺省文件和Filelist節中的文件,

//指定目錄和子目錄的ID 并指定文件的標準位置。

 

Ggdiver.Files.Driver=10,System32\Drivers

Ggdiver.Files.Driver=10, System32\Drivers

[Manufacturer]            //指定生產廠商和models節中相應的名稱

%ABCD%=Ggdriver

[models]                  //最新的硬件ID號先出現

%USBDevice_V2%=V2Install,USB\VID_ABCD%PID_EFOL&REV_DO02

%USBDevice_V1%=V2Install,USB\VID_ABCD%PID_EFOL

[install]                         //指向添加的設備接口列表

Copyfiles=Ggdriver.Files.Driver

AddReg=Ggdriver.AddReg

LogConfig=logconfig

DirverVer=19/10/2001

ProfileItems=AB\cd

[filelist]

[addreg]

[logconfig]

[install.AddService]

ServiceTypy=l

StartType=start-code

ErrorControl=error-control-level

ServiceBinary=path-tc-driver

INF文件是一個文本文件,由不同的節組成,每一個節從括在方括號中的節名稱開始,后面是節的內容。這些節也是分層的,其先后順序與本樣例基本保持一致。

在上面的樣例中:

[Verson ]節中,Signature項只能在$WindowsNT$,$Winfows95$以及$WindowsNT$中選一;

Provider項是INF文件的創造者,通常是設備的生產商;

Class項是系統定義用戶指定的類名;

CatalogFile[.NTetc]則是必須包含的驅動程序包的WHQL數字簽名的目錄說明文件。

[Strings ]節中定義代替字符串的宏: 

如例中:ABCD=me,the writer”即是說%ABCD%的意思是me,the writer。而在使用時,也用“methe writer”代替ABCD。為了適應不同的語言上下文,可以在String 的后面附加(在WinntH`中定義的)LangIDSubLangID,形成新的Strings節。LangIDSubLangID都是兩位數,它們合作指定某語言上下文。

如定義一個英國英語(0902)的flour:

[Strings]

ABC=”Flor”

[Strings.0902]

ABC=”Flour”

[SourceDisksName][SourceDisksFiles]節分別是指源代碼盤或發行盤的描述,目錄和打包文件。如果所有文件都在根目錄中,[SourceDisksFiles]節可以是在空的

[DestinationDirs]節中,復制缺省文件和Filelist節中的文件,指定目錄和子目錄的ID 并指定文件的標準位置。

[Manufacture]節指定生產廠商和models節中相應的名稱;

[install]節則指向添加的設備接口列表,接口鍵的注冊表,其中:

Copyfiles=filename|filelist項,指定要復制的文件或后面列出文件的列表節的名稱。

AddReg=addreg項,指定后面遺留設備節的名稱。

LogConfig=logconfig項,指定后面遺留設備節的名稱。

ProfileItems項,指定添加到計算機界面“開始”菜單中的文件名稱項。

[filelist]指定要安裝的文件列表。

[addreg]節,指定新的鍵和值。

[logconfig]節,指定遺留設備的I/O地址,IRQ等配置的詳細信息。

[installAddService]節,只針對Windows2000的驅動程序,指定驅動程序的詳細信息。

 

下面我們具體介紹一下INF文件結構。

1.1INF文件結構

一個INF文件是一個被劃分為節(Section)的簡單的文本文件,每節由方括號([])內的標示符表示。某些節名字是必須的,而另一些是驅動程序專用的。每節下面的各項控制某些安裝操作,或者連接或列舉其它節。

文件中各節出項的順序并不重要,因為每節都被命名和鏈接了。一節內容在遇到另一節或者遇到文件結尾之前繼續執行。規定節的唯一的名字是區分大小寫的,并且在長度上必須限制在28個字符以內,以保持與Windows 98 的兼容性。節的名字可以包括空格,但是只有在整個名字應用時。允許下劃線和點字符。

節中各項的基本格式如下:

entry=value[value….]

這里的entry是一個指令,關鍵字或者文件名,而value是應用于entry的屬性。

下圖表示了節名字鏈接。

Entryvalue名字可以規定為一個字符串記號(string token),它是一個由百分號%包圍的替換字節串,一個獨立的INF——[Strings],給指定的語言ID提供了字符串記號值。

下面我們看一下INF文件的各個小節及小節的基本內容:(表1,表2

下面我們詳細每一節的內容:

1.2 Version

一個有效的INF文件以一個[Version]節開始,它擔當整個INF文件的頭部和簽名。[Version]節中允許的和要求的項都列在了下表-3

 

1.3 Manufacturers

另一個必須的節是[Manufacturers]項。該節中的每個項列出INF文件安裝的設備和他們的驅動程序。每個項的格式如下:

 manufacturer=model

這里的manufacturer列出要被安裝的一個或多個硬件型號的制造商在INF文件中的唯一名字。Model值指向另一個INF節名字,進一步列出硬件型號驅動程序安裝的方向。

1.4 Models

對于列在[Manfacturers]節中的每個型號,必須有一個相應的節作為由model指定的節出現。每個model項的形式為:

device-description=install-section-namehw-id[compatible-id…]

這里的device-description表示人可以理解的設備型號列表和一個簡單的描述。在一些安裝過程中此字符串在一個對話框中提交給用戶,因此有必要提供多種語言作為字符串記號。

 install-section-name值引用[DDInstall]節,表示值進一步安裝的另一個INF節,hw-id值是硬件設備在PNP兼容的總線上聲明時返回的PnP標示符。例如。USB \ VID_045E&PID_OOB   標示USB上的Microsoft HIDHuman Input Device)鍵盤設備。能夠增加任意數量的compatlible-id值,表示相同的安裝腳本可以用于列表中包含的任何設備。

1.5 DDInstall

INF節名字鏈表的低部附近(但并非最低部)是[DDInstall]節,它從[Models]節中為每個制造商的每個型號規定一個唯一的名字。[DDInstall]節中允許的和要求的項目見下面表4.

       雖然在語法上只有AddReg項是必需的,但是CopyFiles項是[DDInstall]節的一個基本指令。它采取如下形式:

CopyFiles = file – list – section [file – list – section….]或者

CopyFile = @filename

前一種形式更加常用,因為它允許一個間接指針指向包含被安裝的文件列表的其他節。然而,對于簡單的驅動開發程序安裝,采取直接文件名方法就行了。在下面兩個小節中將對AddRegCopyFiles指令做進一步解釋。

1.6  CopyFiles

INF文件的[CopyFiles]節有一個唯一的名字,并從[DDInstall]節的CopyFiles指令引用它。該節中的每個項采用如下形式:

destination – filename[source- filenametemp-filenameflag]

這里的destiantion-filename是最重要復制的目標文件名。如果源文件名不相同,必須規定source – filenameTemp-filename值不再適用(雖然 Windows 98仍然要求),它在系統再次引導之前規定新文件的臨時文件名。對于Windows 2000,忽略此值。

 Falg 值規定對新目標文件的處理,其描述見表5。可以對falg值中的各個為進行“或”運算,以使多個操作起作用。幾種操作是互斥的(例如,WARN_IF_SKIPNOSKIP,有疑問時應當查閱有關文檔。

因為[CopyFiles]節的項的語法沒有包含一個可選項來規定源文件的磁盤或路徑,必須使用其他INF節——[SourceDisksNames][SourceDisksFiles]。然而[CopyFiles]節中各項復制的文件由另一個INF節——[DestiantionDirs]節指定。

1.7 AddReg

一個INF文件的[AddReg]節被唯一命名,并從[DDInstall]節中的AddReg指令引用它。此節的目的是提供增加或者修改目標系統注冊表中的項目。本節中每個項目采取如下形式:

 reg-root[subkeyvalue- nameflags value]

這里的reg- root是注冊表庫(hive)之一的縮寫,見表6所列。值表示要被修改的注冊表庫。Subbkey值表示庫底下的鍵名,在層次結構中子鍵用反斜線(\)字符隔開。例如,software\W2KdriverBook\Driver\Seting HKCU或者HKLM庫的一個有效子鍵。

Value-name指定要增加或修改的注冊表值。每個注冊表鍵包含一個或多個值,保存不同類型的數據。注冊表編輯器(Registy Editor)在右邊面板中列出子鍵的值。值名和值數據同時在該面板中出現,左邊面板只列出子鍵。圖3說明了注冊表術語之間的關系。

Flags指定數據保存的類型,flages可能的位置見表7所列:

1.8  SourceDisksNames

如果INF文件控制的驅動程序文件的分布跨越多個磁盤(軟盤或光盤),則INF文件必須包含一個[SourceDisksNames]節。本節在分布集中為每個磁盤包含一項,項目采取如下形式:

Diskid=disk – descript[tagfileunusedpath]

這里的diskid`是分布集內的一個一個唯一的編碼。通常,磁盤從1開始編碼。Disk – description 標簽是一個供人閱讀的文本串,可以保證安裝過程中擁護提供正確的磁盤,在安裝過程繼續之前核對tagfile值是否在插入的煤體上。如果tagfile文件不存在,則提示用戶插入正確的磁盤。如果tagfile值包含-CAB擴展,則該文件被認為是磁盤上驅動程序源文件的壓縮文件集。

Path值是磁盤上驅動程序源文件的相對于根目錄的磁盤路徑。與tagfile值一樣,path是可選的。如果忽略它,則認為根目錄是文件的源。

1.9 SourceDisksFiles

驅動程序INF文件還必須包含一個稱為[SourceDisksFiles]的節。此節列出驅動程序安裝期間使用的文件名。每個文件對應于本節中的一個項,并采取如下形式:

Filename = diskid[sbdirsize]

很自然,diskid值在[SourceDisksNames]節中指定了找到filename的一個磁盤,subdir值可選,它指定文件在磁盤上的一個路徑。Size值可選,指定文件以字節為單位的未壓縮大小。在開始文件復制前,安裝進程可以使用此大小確定源文件是否合適目標系統。

1  DestinationDirs

這是INF文件中必需的節,指定源文件的目標目錄。沒有這部分內容,安裝程序或進程將沒有用來拷貝文件的目標目錄。[DestinatonDirs]節中的項采取如下形式:

File – list – section = dirid[subdir]或者

DefaultDestDir = dirid[subdir]

這里file – list – section規定了在[CopyFiles]指令中調出來的部分。它規定一個指令拷貝的所有文件安裝到指定的目錄。對于項目DefaultDestDir,上述規范適用于所有[CopyFiles]指令,否則不會與[DestionationDirs]節中的file- list – section項關聯。

Dirid值根據表8規定了目標的一個列舉值。如果提供了值subdir,它指定diid調處的目錄下面的一個相對路徑。

 

2. DDInstall.Services

為了真正的使復制的文件成為目標系統上的驅動程序,必須通知服務器管理程序(SCM)。安裝在Windows 2000下的每個驅動程序在HKLM\System\Current-ControlSet\Services下的注冊表中有一項。ServiceType值為1表示一個內核模式設備驅動程序。StartType指定在引導過程中的什么點上驅動程序裝入(3表示按需或手動啟動)。在驅動程序裝入過程中遇到錯誤時,ErrorControl值確定發生了什么情況。ServiceBinary值指向驅動程序文件(。SYS文件)的位置,但是,如果二進制值位于%windir%\system32\drivers目錄,并且與HKLM\…\Services下的子鍵有相同的名字,則可以忽略ServiceBinary值。

DDInstall.Services節項目中包括一個形式如下的項目:

AddService = ServiceName[flags]service – install – section[eventlog – install – section]

這里的ServiceName表示設備的名字,通常是驅動程序的名字,沒有。SYS擴展名。Flags值的描述見表9

Service – install – section和可選的eventlog- install – section值調出控制服務值項目(諸如ServiceTypeStartType)的新增的INF節名字。

3. ServiceInstall

[ServiceInstall]節名字實際上由DDInstall.Services節中每個AddService項唯一規定,它控制把驅動程序安裝到服務控制管理程序。[ServiceInstall]節允許的項見表10所列。

4 .驗證INF語法

DDK包含一個基本的工具CHKINF,在DDKTools目錄中。它依賴于Perl腳本引擎,該引擎可以從www.perl.com上下載。雖然工具沒有什么優點,但它在檢查標準Microsoft INF文件時能報告許多錯誤。工具以HTML文件形式輸出。

DDK Tools目錄還包括一個用語簡化INF文件構造的實用程序CENINFEXE 。 必須把該工具區分為基本工具,它對入門者是有用的。

最后,DDK提供了STAMPINFEXE這一簡單工具,它提供了快速增加或修改INF中版本信息的機制。

posted on 2008-03-17 10:00 葉子 閱讀(10749) 評論(1)  編輯 收藏 引用 所屬分類: 驅動開發

Feedback

# re: 驅動程序安裝-INF 2008-06-25 20:12 毛小平

驅動程序安裝INF視頻和游戲控制器  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产高清| 91久久精品日日躁夜夜躁国产| 欧美日韩免费在线| 在线国产日韩| 欧美尤物一区| 在线一区二区日韩| 欧美日韩国产区一| 99视频有精品| 亚洲国产综合视频在线观看| 久久精品国产第一区二区三区最新章节 | 国产免费成人在线视频| 亚洲午夜精品视频| 亚洲影音先锋| 一本色道**综合亚洲精品蜜桃冫| 欧美激情综合在线| 一本色道久久加勒比88综合| 亚洲精品永久免费精品| 欧美日韩精品中文字幕| 亚洲视屏在线播放| 一区二区三区毛片| 国产精品久久久久久久7电影| 99国产精品私拍| 一区二区三区黄色| 国产日韩在线一区二区三区| 久久久精品网| 老巨人导航500精品| 亚洲精品一区二区三| 亚洲激情专区| 欧美日韩在线观看一区二区| 午夜免费久久久久| 欧美亚洲在线观看| 亚洲电影下载| 日韩视频免费| 国产亚洲精品福利| 欧美成人69| 欧美区在线观看| 亚洲影院一区| 久久久久国产一区二区三区| 亚洲久久成人| 中文在线资源观看网站视频免费不卡 | 日韩午夜在线电影| 欧美日韩一区二区高清| 久久久一二三| 亚洲二区在线视频| 亚洲国内欧美| 欧美国产成人在线| 欧美午夜无遮挡| 一区二区三区黄色| 久久频这里精品99香蕉| 国产精品美女久久久久aⅴ国产馆| 国产午夜精品久久久| 久久精品在线播放| 欧美激情第3页| 欧美在线3区| 欧美日韩成人综合在线一区二区 | 精品动漫3d一区二区三区免费| 日韩视频一区二区在线观看| 一本久久a久久精品亚洲| 国外成人网址| 亚洲一区久久| 99精品黄色片免费大全| 久久激情五月丁香伊人| 亚洲一区日韩在线| 亚洲无毛电影| 狠狠色噜噜狠狠狠狠色吗综合| 久久这里只有精品视频首页| 欧美精品一区二区三区高清aⅴ| 亚洲国产欧美日韩另类综合| 国产精品99久久久久久有的能看| 欧美日韩精品系列| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区欧美精品| 亚洲国产精品一区在线观看不卡| 久久婷婷成人综合色| 欧美日韩综合另类| 欧美激情四色| 激情久久一区| 欧美在线视频一区| 亚洲国产欧美日韩精品| 久久精品30| 亚洲影院在线| 欧美日韩福利视频| 亚洲黄色天堂| 亚洲黄色尤物视频| 99国产精品99久久久久久粉嫩| 欧美日韩一区二| 久久精品成人一区二区三区蜜臀| 欧美一区二区三区在线| 一本久道久久综合狠狠爱| 美女精品网站| 亚洲激情在线视频| 夜夜嗨一区二区三区| 欧美激情一区三区| 亚洲激情一区二区三区| 一区二区三区产品免费精品久久75| 亚洲视频高清| 亚洲免费网址| 国产精品乱子久久久久| 亚洲综合第一| 久久精品人人做人人爽| 亚洲欧美综合国产精品一区| 亚洲国产成人久久综合| 亚洲一区二区成人在线观看| 在线视频一区二区| 欧美日韩国产在线播放网站| 浪潮色综合久久天堂| 亚洲黄色成人| 乱中年女人伦av一区二区| 亚洲国产综合91精品麻豆| 99国产精品久久久久久久久久| 99精品国产在热久久| 亚洲视频1区2区| 欧美成人中文| 最近中文字幕mv在线一区二区三区四区| 欧美韩日一区二区三区| 亚洲精品国产品国语在线app| 久久久久一区二区三区| 久久中文字幕一区| 日韩视频精品在线观看| 国产精品日韩欧美一区二区| 亚洲在线播放| 美日韩在线观看| 日韩视频亚洲视频| 欧美特黄一区| 久久久国产成人精品| 欧美精品一区二区三区蜜桃| 久久亚洲美女| 亚洲精品国产精品久久清纯直播| 一本色道久久综合精品竹菊| 欧美怡红院视频一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲一二三四久久| 久久精品电影| 亚洲国产欧美日韩精品| 国产精品久久91| 巨胸喷奶水www久久久免费动漫| 亚洲一区区二区| 国产日韩精品一区| 亚洲影视中文字幕| 欧美大片免费观看| 香蕉久久夜色精品| 亚洲人线精品午夜| 国产亚洲欧洲997久久综合| 久久亚洲捆绑美女| 99在线热播精品免费| 欧美1区2区| 性刺激综合网| 99热在这里有精品免费| 国产亚洲制服色| 欧美好骚综合网| 久久国产视频网站| 一本大道av伊人久久综合| 一区精品久久| 国产农村妇女毛片精品久久麻豆| 久久麻豆一区二区| 亚洲特级毛片| 亚洲午夜伦理| 日韩亚洲精品电影| 久久麻豆一区二区| 麻豆久久婷婷| 国产精品国产自产拍高清av王其| 亚洲精品欧洲| 欧美激情一区| 久久女同互慰一区二区三区| 亚洲特级毛片| 亚洲视频精品在线| 一区二区三区精品久久久| 亚洲乱码久久| 亚洲精品国产品国语在线app| 欧美精品七区| 鲁大师影院一区二区三区| 亚洲高清色综合| 亚洲最新在线| 亚洲人成久久| 亚洲精品视频啊美女在线直播| 欧美伦理在线观看| 蜜臀99久久精品久久久久久软件| 亚洲精品国产精品乱码不99按摩 | 91久久国产综合久久蜜月精品 | 国产亚洲综合精品| 国产欧美一区二区精品婷婷 | 久久久久久国产精品mv| 性欧美超级视频| 国产精品入口福利| 欧美日韩精品| 国产精品乱人伦一区二区| 欧美va亚洲va香蕉在线| 免费在线欧美视频| 老色鬼久久亚洲一区二区| 久久福利电影| 久久嫩草精品久久久久| 欧美岛国在线观看| 亚洲国产精品一区二区尤物区 | 国产伦精品一区二区三区高清版 | 亚洲日本电影| 亚洲美女av在线播放| 亚洲精品网站在线播放gif| 亚洲国产精品久久久久久女王| 欧美日韩国产探花| 欧美午夜精品久久久久久人妖|