依慣例, 版本 區塊會先出現在 INF 檔案中。 每個 INF 檔案都必須包含這個區段。
[Version]
Signature="signature-name"
[Class=class-name]
[ClassGuid={nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}]
[Provider=%INF-creator%]
[ExtensionId={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}]
[LayoutFile=filename.inf [,filename.inf]... ] (Windows 2000 and Windows XP)
[CatalogFile=filename.cat]
[CatalogFile.nt=unique-filename.cat]
[CatalogFile.ntx86=unique-filename.cat]
[CatalogFile.ntia64=unique-filename.cat] (Windows XP and later versions of Windows)
[CatalogFile.ntamd64=unique-filename.cat] (Windows XP and later versions of Windows)
[CatalogFile.ntarm=unique-filename.cat] (Windows 8 and later versions of Windows)
[CatalogFile.ntarm64=unique-filename.cat] (Windows 10 version 1709 and later versions of Windows)
DriverVer=mm/dd/yyyy,w.x.y.z
[PnpLockDown=0|1] (Windows Vista and later versions of Windows)
[DriverPackageDisplayName=%driver-package-description%]
[DriverPackageType=PackageType]
Entries
簽名=「簽名名稱」
價格必須是Windows新台幣或$Chicago元。 這表示該 INF 適用於哪些作業系統。 這些簽名值具有以下含義。
| 簽名值 | Meaning |
|---|---|
| $Windows NT$ | 所有 Windows 作業系統 |
| $Chicago$ | 所有 Windows 作業系統 |
包圍的美元符號字元($)是必須的,但這些字串不區分大小寫。 如果 簽名名稱 不是這些字串值,該檔案就不被接受為有效的 INF。
一般來說,Windows 不會區分這些簽章值。 必須指定其中一項,但不論是哪一種。 你應該指定適當的值,讓讀取 INF 檔案的人能判斷它是針對哪個作業系統。
有些類別安裝商會對簽名值的指定有額外要求。 若有此類需求,請在本 Windows Driver Kit (WDK) 的裝置類型專屬章節中討論。
INF必須透過在其DDInstall區段附加系統定義的擴充功能,提供作業系統專屬的安裝資訊,無論簽名名稱是$Windows NT$或$Chicago$。 (關於這些擴充功能的討論,請參見「 為多個平台與作業系統建立 INF 檔案 」。)
Class=類別名稱
對於任何標準類型的裝置,這會指定使用此 INF 檔案所安裝裝置類型的 裝置設定類別 名稱。 這個名稱通常是系統定義的類別名稱之一,例如 Net 或 Display, 這些名稱在 Devguid.h 中都有列出。 欲了解更多資訊,請參閱 System-Supplied 裝置設定類別。
如果 INF 指定了一個 類別,它也應該為其 ClassGUID 條目指定對應的系統定義 GUID 值。 為任何預設裝置設定類別的裝置指定相符的 GUID 值,可以更快安裝該裝置及其驅動程式,因為這有助於系統設定程式碼優化其 INF 搜尋。
若 INF 新增裝置類別,應提供唯一且不區分大小寫的 類別名稱 值,與 Devguid.h 中系統提供的類別不同。 類別名稱字串的長度必須不超過32個字元。 INF必須為 ClassGUID 條目指定新產生的GUID值。 另見 INF ClassInstall32 章節。
此項對於既不安裝新裝置驅動程式於預定義裝置設定類別,也未安裝新裝置設定類別的 INF 無關。
Note
此條目是透過 隨插即用(PnP)管理器安裝的裝置驅動程式所必須的。
ClassGuid={nnnnnnnnnn-nnnn--}-
指定 裝置設置類別 GUID。 GUID 值的格式如下所示,其中每個 n 是一個十六進位數字。
此 GUID 值指定從此 INF 檔案安裝的裝置安裝類別。 此類別專屬的 GUID 值同時識別裝置類別安裝程式,以及類別特定屬性頁提供者(若有)。
對於新的 裝置設定類別,INF必須指定一個新產生的 ClassGUID 值。 欲了解更多如何建立 GUID,請參閱 「在驅動程式中使用 GUID」。 另請參閱裝置設定類別。
Note
此條目是透過 PnP 管理器安裝的裝置驅動程式所必需的。
ExtensionId={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
在撰寫 擴充 INF 時指定擴充功能 ID GUID。 GUID 值的格式如下所示,每個 x 是十六進位數字。
在建立初始版本的擴充 INF 時,INF 必須指定一個新產生的 ExtensionId 值。 然而,在更新現有擴充 INF 時, ExtensionID 必須保持不變,這樣才能讓多個相關版本的擴充 INF 相互對照,而非被視為可同時安裝在同一裝置實例上的獨立擴充 INF。 欲了解更多如何撰寫擴充名 INFs,請參見 「使用 擴充名 INF 檔案」。
Note
此項僅在建立擴充 INF 時必要,並以指定 Class = Extension 和 ClassGuid = {e2f84ce7-8efa-411c-aa69-97454ca4cb57}來識別。
ClassVer=主要。次要
除非裝置類別(如印表機)明確要求,否則保留給系統使用。 例如,請參見 V4 驅動單元 INF。
提供者=%INF 創建者%
識別 INF 檔案的提供者。 通常,這會以 %OrganizationName% 標記形式指定,並在 INF 檔案的 字串 區塊中展開。 提供者名稱的最大字元長度為LINE_LEN。
例如,系統附帶的 INF 檔案通常會指定 INF 產生者為 %Msft%,並在字串區段定義 %Msft% = 「Microsoft」。
Note
此條目是透過 PnP 管理器安裝的裝置驅動程式所必需的。
CatalogFile=filename.cat
指定目錄(.cat) 檔案將包含在驅動程式套件的發行媒介中。
當驅動程式套件提交給 Microsoft 進行數位簽章時,WHQL 會在測試並指派數位簽章後,提供該驅動程式的目錄檔案。 欲了解更多關於 IHV 或 OEM 驅動程式套件的測試與簽署資訊,請參閱 WHQL 發布簽章。 目錄檔案未列於 INF 的 SourceDisksFiles 區段或 CopyFiles 指令中。 Windows 假設目錄檔案與 INF 檔案位於同一位置。
系統提供的 INF 檔案從不會有 CatalogFile= 條目,因為作業系統會對所有系統提供的 xxx.cat 檔案驗證此類 INF 的簽章。
CatalogFile.nt=unique-filename.cat |
CatalogFile.ntx86=unique-filename.cat |
CatalogFile.ntia64=unique-filename.cat |
CatalogFile.ntamd64=unique-filename.cat
CatalogFile.ntarm=unique-filename.cat
CatalogFile.ntarm64=unique-filename.cat
指定另一個由 INF 撰寫者決定的唯一檔案名稱,且 為 。目錄檔案的 Cat 副檔名。 若省略這些可選項目,則會使用特定的 目錄檔案=filename.cat 來驗證 WDM 裝置/驅動程式安裝。
如果有任何裝飾過的目錄檔案。=xxx 條目存在於 INF 的版本區塊中,與一個未裝飾的 CatalogFile= 條目同時存在,未裝飾條目則假設用於識別未指定裝飾條目的平台上的裝置安裝、驅動程式安裝或兩者皆有的 filename.cat。
任何跨平台裝置驅動程式的 INF 檔案,且包含 CatalogFile= 和 CatalogFile。xxx= 條目必須為每個此類 .cat 檔案提供唯一由 IHV/OEM 決定的名稱。
欲了解更多如何使用系統定義的 .nt、 .ntx86、 .ntia64、 .ntamd64、 .ntarm 及 .ntarm64 擴充名的資訊,請參閱「 為多平台與作業系統建立 INF 檔案」。
Note
由於同一個 .cat 檔案可在所有支援平台上使用,因此此條目並非必要或建議使用。 不過,如果你想為驅動程式建立平台專屬的 .cat 檔案,必須使用這個條目。
DriverVer=mm/dd/yyyy,w.x.y.z
本條目指定由此 INF 檔案安裝的驅動程式版本資訊。 從 Windows 2000 開始,此條目為必備。
關於如何指定此條目,請參見 INF DriverVer 指令。
PnpLockDown=0|1
規定 隨插即用(PnP)是否阻止應用程式直接修改驅動程式套件 INF 檔案所指定的檔案。 若 PnpLockDown 指令設為 1,PnP 會阻止應用程式直接修改由 INF CopyFiles 指令複製的檔案。 否則,若指令未包含在 INF 檔案中或指令值設為零,擁有管理員權限的應用程式可直接修改這些檔案。 以這種方式保護的驅動程式檔案稱為 第三方受保護的驅動程式檔案。
為確保 PnP 驅動程式安裝的完整性,應用程式不應直接修改由驅動程式套件 INF 檔案複製的驅動程式檔案。 應用程式應僅使用 Windows 提供的裝置安裝機制來更新 PnP 驅動程式。
從 Windows Vista 開始,驅動程式套件應該將 PnpLockDown 設為 1,以防止應用程式直接修改驅動程式檔案。 然而,一些現有的應用程式會直接刪除驅動程式檔案。 為了維持與這些應用程式的相容性,該驅動程式套件的 PnpLockDown 指令應設為零。
Note
雖然 Windows Vista 及後續版本的 Windows 上的 PnP 不要求 INF 檔案必須包含 PnpLockDown 指令才能安裝驅動程式,但未來 Windows 版本的 PnP 可能會要求 PNP 驅動程式的 INF 檔案包含 PnpLockDown 指令。
DriverPackageDisplayName=%driver-package-description%
Deprecated. 先前由驅動程式安裝框架(DIFx)使用。 有關 DIFx 棄用的資訊,請參閱 DIFx 指引。
DriverPackageType=PackageType
Deprecated. 先前由驅動程式安裝框架(DIFx)使用。 有關 DIFx 棄用的資訊,請參閱 DIFx 指引。
Remarks
當驅動程式套件通過硬體品質實驗室(WHQL)測試Microsoft Windows,WHQL 會將 .cat 目錄檔案回傳給 IHV 或 OEM。 每個 .cat 檔案都包含驅動程式套件的數位加密簽章。 IHV 或 OEM 必須在 INF 版本區塊列出這些 .cat 檔案,並且必須在發行媒介上提供與 INF 檔案相同的位置。 .cat 檔案必須是未壓縮的。
Note
若 INF 版本區塊未包含至少一個 CatalogFile 或 CatalogFile.ntxxx 條目,該驅動程式將被視為未簽署,且 DriverVer 指令中列出的日期不會被 Windows 顯示。
欲了解更多資訊,請參閱 駕駛簽名。
Examples
以下範例展示了典型的簡單驅動程式套件 INF 的版本區段,接著是本範例版本區塊中指定的 SourceDisksNames 與 SourceDisksFiles 區段:
[Version]
Signature="$Windows NT$"
Class=SCSIAdapter
ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}
Provider=%INF_Provider%
CatalogFile=example.cat
DriverVer=01/29/2010,1.2.3.4
PnpLockdown=1
[SourceDisksNames]
;
; diskid = description[, [tagfile] [, <unused>, subdir]]
;
1 = %Disk_Description%,,,\WinNT
[SourceDisksFiles.x86]
;
; filename_on_source = diskID[, [subdir][, size]]
;
exampleDriver.sys = 1,\x86
; ...
[Strings]
INF_Provider="Contoso"
Disk_Description = "Contoso Drivers Disk"
; ...