複製鏈接
請複製以下鏈接發送給好友

inf文件

鎖定
INF是Device INFormation File的英文縮寫,是Microsoft公司為硬件設備製造商發佈其驅動程序推出的一種文件格式,是Windows操作系統下用來描述設備或文件等數據信息的文件。INF文件是由標準的ASCII碼組成,可以用任何一款文字編輯器查看修改其中的內容。INF文件中包含硬件設備的信息或腳本以控制硬件操作。在INF文件中指明瞭硬件驅動該如何安裝到系統中,源文件在哪裏、安裝到哪一個文件夾中、怎樣在註冊表中加入自身相關信息等等。
中文名
inf文件
外文名
Device INFormation File
發佈公司
Microsoft公司
類    別
硬件設備驅動程序推出的格式
組    成
標準的ASCII碼
全    名
設備信息文件

inf文件基本情況

INF文件是一個初始化信息文件,它包含了Windows針對一個或者更多設備安裝軟件和驅動程序所需的信息。INF文件還包含需要存儲在Windows註冊表中的信息。每一種驅動程序都提供本機與操作系統關聯的INF文件,該文件存儲在C:\WINDOWS\inf目錄下。 [1] 
比如,當HID或者MSC設備連接到你的PC上,Windows枚舉該設備並找到與該設備類關聯的INF文件,然後加載相應的驅動程序。針對本地設備的INF文件稱為系統INF文件。某個廠商針對自己定義設備的INF文件也同樣被複制到C:\WINDOWS\inf目錄下,這些INF文件被稱為廠商INF文件。一個INF文件支持Windows針對某種設備加載一個或者多個驅動程序驅動程序可能在本機,也可能是由廠商提供。此圖列出了針對每一個Micripm USB類加載的Windows驅動程序。 [2] 
安裝監視器、調制解調器和打印機等設備所需的驅動程序,都是通過INF文件,正是INF的功勞才使得Windows可以找到這些硬件設備的驅動並正確安裝。當我們通過“開始→控制面板→添加刪除程序→Windows安裝程序”來添加系統組件的時候,INF文件將會自動調用。而在其他場合下,則需要在INF文件上點擊鼠標右鍵,然後選擇“安裝”,才能順利安裝應用程序。 [1] 

inf文件詳解

一般我們總是認為INF文件是系統設備的驅動程序,其實這是錯誤的認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因為INF文件為該設備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看着説明書安裝電腦硬件一樣,我們就是Windows系統,説明書就是INF文件。INF文件功能非常強大,幾乎能完成日常操作的所有功能。源文件在哪裏、安裝到哪一個文件夾中、怎樣在註冊表中加入自身相關信息等等。 [2] 
在C:/Windows/INF文件夾中存放有大量的INF文件。該文件夾一般處在隱含狀態,如果你想查看該文件夾,可選擇“查看→文件夾選項→查看”,然後在“文件和文件夾”選項下選擇“顯示所有文件”。
安裝監視器、調制解調器和打印機等設備所需的驅動程序,都是通過INF文件,正是INF的功勞才使得Windows可以找到這些硬件設備的驅動並正確安裝。當我們通過“開始→控制面板→添加刪除程序→Windows安裝程序”來添加系統組件的時候,INF文件將會自動調用。而在其他場合下,則需要在INF文件上點擊鼠標右鍵,然後選擇“安裝”,你才能順利安裝應用程序。
在%windir%/INF文件夾中存放有大量的INF文件。該文件夾一般處在隱含狀態,如果你想查看該文件夾,可選擇“查看→文件夾選項→查看”,然後在“文件和文件夾”選項下選擇“顯示所有文件”。

inf文件文件處理過程

在安裝了USB設備驅動程序後,通過INF文件將該USB設備的一些基本信息保存在系統註冊表中。另外驅動程序文件( *sys )和相應的INF文件也將複製到指定的系統目錄中。當USB設備連接到計算機上時,Windows操作系統將檢測到USB設備的連接。然後將系統中所有的INF文件中的數據信息與該USB設備進行比較,逐個找到與之相符合的IF文件。
整個過程可以分為如下3步:
(1)系統從連接的USB設備中獲取設備描述符的供應商字段( id Vender)和產品字段( idProduct),從中得到設備的硬件ID。
(2)系統査找與該硬件 ID 相符合的 INF文件。如果找不到,系統將讀取接口描述符,從中提取該USB設備的兼容 ID ,並查找與兼容 ID 相符合的 INF文件。
(3)如果仍然沒有找到,則系統提示用户自己安裝該USB設備的驅動程序 [3] 

inf文件結構

INF文件其實是一種純文本文件,可以用任意一款文本編輯軟件來打開進行編輯,如:記事本、寫字板等。INF文件有一整套的編寫規則,每一個INF文件都是嚴格按照這些規則來編寫的。 [1] 
*規則一
INF文件是分節的,每一個INF文件有許多的節組成,節名用方括號括起來。這些節名有些是系統定義好的,有一些是用户自定義的。每一個節名最長為255個字符Windows 2000/XP/2003操作系統中)或28個字符(Windows 98操作系統中)。節與節之間沒有先後順序的區別,另外,同一個INF文件中如果出現兩個同樣的節名,則系統會自動將這兩個節名下面的條目合併到一起。
*規則二
在節與節之間的內容叫條目,每一個節又是由許多的條目組成的,每一個條目都是由形如“signature="$CHICAGO$"”的形式組成的。如果每一個條目的等號後有多個值,則每一個值之間用“,”號分隔開。
*規則三
INF文件對大小寫不敏感。
*規則四
“;”號後面的內容為註釋。
*規則五
如果一個條目的內容過多,在一行無法書寫完全,則用“\”將一行內容書寫為多行。

inf文件INF結構

下面為INF文件的結構。

inf文件Version節

每一個INF文件都包含一個這樣的節,該節中的條目主要是描述此INF文件支持的設備類型和適用的操作系統。在該節中如果出現 “signature="$CHICAGO$" ” 這樣的條目則表示該INF文件適用於Windows 98之後的所有操作系統,如果包含 “signature="$Windows NT$"” 這樣的條目則表示該INF文件適用於Windows 2000/XP/2003操作系統,而且兩者必具其一。
另外,該節中“CLASS”條目很重要,它表明了設備的類型,常見的類型有:Display(顯示設備,如顯卡)、Media(多媒體設備,如聲卡)、Net(網絡設備,通常是網卡)、Modem(調制解調器)、Printer(打印設備)、Image(圖像捕獲設備,如攝像頭)。

inf文件Manufacturer節

該節中的條目主要是描述INF文件可以識別的所有硬件設備,其中包含有設備的生產廠家,以便設備的正確安裝。如 “ %ATi%=ATi ” 指明設備的生產商為 “ATi” ,是顯卡的生產商。

inf文件SourceDisksNames節

該節主要指明安裝文件所在的介質。如:“1="ATi Drivers Release CD"”表明所有驅動程序都在零售版的CD盤上。

inf文件SourceDiskFiles節

驅動程序文件列表及被安裝的位置,該節必須結合 [ SourceDisksNames ] 節才能知道具體的位置。如 “ atinbtxx.sys=1” ,則你必須到 [ DestinationDirs ] 節去查看 “1” 具體代表那個位置。

inf文件DestinationDirs節

INF文件會指示安裝程序在安裝的過程中,將一些文件複製到硬盤上,或者將硬盤上的一些文件刪除、重命名等。該節即指定了為實現上述目的的文件所在的目的路徑。

inf文件DefaultInstall節

在這一節中描述了設備驅動程序與硬件設備的實際屬性。默認情況下,首先執行[DefaultInstall]節,該節指定了要複製或刪除的文件,註冊表的更新,INF文件的更新等等信息,同時又包含指向其他節的指針

inf文件String節

這一節中定義了字符串變量,當某些字符串頻繁地出現在INF文件中,為簡化輸入,可以在該節中定義一個字符串變量,代表該字符串出現在INF文件中。

inf文件編輯

INF文件包含了告訴Windows如何為設備安裝驅動程序的指令。這裏的供應商類包含兩個INF文件,它們位於\Micrium\Software\uC - USB - Device - V4\App\ Host\OS\ Windows\Vendor\INF。 [2] 
●WinUSB_single.inf,當設備只有單個供應商類接口時使用。
●WinUSB_ composite. inf,當設備除了一個接口之外,還有至少一個供應商類接口時使用。
這兩個INF文件允許加載Windows提供的 WinUSB. sys 驅動。WinUSB_ single. inf 定義了默認的硬件 ID 字符串:
USB \ VID_ FFFE&.PID_ 1003
而 WinUSB_ composite,inf定義了:
USB \ VID_ FFFE&.PID_ 1001&MI_ 00
硬件ID字符串包含了供應商 ID ( VID)和產品 ID (PID) 。在默認字符串中,VID是FFFE,PID為1003或1001。VID/PID值應當和在 usb_ dev_ cfg.c 中USB設備配置結構體裏定義的相匹配。
如果想定義自己的VID / PID,就必須用它替換之前的默認硬件 ID 字符串。
如果組合設備由多個供應商接口組成,為了給所有的接口加載 WinUSB. sys,WinUSB_ composite. inf中的製造商域應作出如下所示的修改。則假定設備有兩個供應商接口。 [2] 
[ MyDevice_ WinUSB. NTx86  ]
% USBMyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_00
% USBlMyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_01
[MyDevice_ WinUSB. NTamd64]
% USB MyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_00
% USBlMyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_01
[MyDevice_ WinUSB. NTia64]
% USB MyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_00
% USBlMyDevice. DeviceDesc % = USB Install, USB \ VID_FFFE&PID_1001&MI_01
可以在INF文件的 [String] 域中為設備加入恰當的描述。下面展示了WinUSB_ single. inf 和 WinUSB_ composite. inf 可編輯部分。
INF文件中描述供應商設備的字符串
[Strings]
ProviderName = "Micrium"           (1)
USB \ MyDevice. DeviceDesc  = "Micrium Vendor Specific Device"        (2)
ClassName  = "USB Sample Class"             (3)

(1): 指定作為驅動提供者的公司名稱。
(2): 設備名稱。
(3): 可以通過修改這個字符串來為設備在設備管理器中指定一個不同的分組。在本例中,Micrium Vendor Specific Device會顯示在USBSample Class分組下。

inf文件實例

下面以ATi顯卡的用於Windows XP的WDM驅動程序為例來説明一下INF文件的具體含義,由於INF文件往往很長,為了説明方便,我們刪除了一些大部分的信息,僅保留一個INF文件的結構。
下面來看幾個INF文件的典型應用。
1.打開“鎖”定的註冊表
第一步:打開記事本程序,輸入以下內容:
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
輸入完畢,另存為UNLOCK.INF,名字任取,擴展名必須是INF
第二步:在“UNLOCK.INF”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”,被鎖的註冊表即會應聲而開。
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”,默認情況下,註冊表檢查程序創建註冊表備份文件時,會將 “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一個圖標
我們首先將硬盤的生硬圖標替換為我們喜歡的圖標。首先準備一圖標文件,你可以用圖標製作程序製作自己的圖標文件,也可以使用現成的圖標文件,最好是保存到硬盤某一個分區的根目錄下。接着打開記事本程序,錄入以下內容:
[autorun]
ICON=******.ICO
其中“******”是圖標文件的路徑及圖標文件名,請自行修改為具體的圖標文件的路徑及圖標文件名。錄入完畢,另存為“Autorun.inf”,並將其剪切到某一個分區的根目錄下。
第二:讓硬盤能歌善舞
想不想當你雙擊了硬盤分區或是點右鍵選擇右鍵菜單中的“自動播放”之後,自動打開音樂播放程序,開始播放音樂文件,讓動聽的音樂時刻環繞在你的左右。
在“Autorun.inf”文件中錄入以下內容:
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 ”程序圖標安裝Batch工具。
接着,運行Batch工具,按照嚮導提示生成“msbatch.inf”文件,並將該文件保存到軟盤中。具體的生成方法請參考有關資料,這裏不再贅述。
當需要重新安裝Windows 98時,用啓動盤進入到DOS提示符下,將保存有“msbatch.inf”文件的軟盤插入軟驅,將Windows 98安裝光盤插入光驅,在DOS提示符後鍵入如下命令:“x:/win98/setup a:msbatch.inf”,回車後即可。其中“X”為光驅和盤符。
5.將屏保請進右鍵菜單
當我們有事暫時離開一會兒,利用設有密碼的屏幕保護程序可以保護我們當前的操作不被他人偷看。但是,在默認的設置中,屏幕保護程序最快也要在1分鐘以後才能夠啓動,那麼怎樣才能快速激活屏幕保護程序呢?
最常見的方法是在桌面上建立一個啓動屏保的快捷方式,在需要時雙擊即可啓動。
第一步:打開記事本程序,錄入以下內容:
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSID\\shell\pingbao",,,"屏幕保護"
HKCR,"CLSID\\shell\pingbao\COMMAND",,,"ssstars.scr /S "%1""
錄入完畢,經檢查無誤後,另存為“PingBao.inf”,文件名可任取,擴展名必須是INF。
第二步:在“PingBao.inf”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”。
第三步:當需要運行屏幕保護的時候,回到桌面上,在“我的電腦”圖標上點擊右鍵選擇“屏幕保護”選項。點擊一下試試,是不是立即啓動屏幕保護程序了。
注意:其中的“ssstars.scr”為欲啓動的屏幕保護程序的文件名,請用你喜歡的屏幕保護程序文件來替換;如果你點選右鍵菜單中的“屏幕保護”選項後,沒有反應即沒有啓動屏幕保護程序,請將文中的“/S "%1"”修改為“"%1" /S”即可。
參考資料
  • 1.    劉榮.圈圈教你玩USB(第2版):北京航空航天大學出版社,2013.04:第266頁
  • 2.    (加拿大/美國)THE MICRIPM USB TEARM著;何小慶,張愛華,何靈淵,韓志華,趙曉彤,江山譯.嵌入式協議棧 PU/USB-DEVICE=PC/USB:THE UNIVERSAL SERIAL BUS DEVICE STACK:北京航空航天大學出版社,2015.09:第187頁
  • 3.    傅志輝.USB開發手冊:中國鐵道出版社,2014.10:第169頁