INF ClassInstall32 區段
警告
如果您要建置通用或 Windows 驅動程式套件,本節無效。 請參閱 使用通用 INF 檔案 和 開始開發 Windows 驅動程式。
ClassInstall32 區段會為新類別中的裝置安裝新的裝置安裝類別。
[ClassInstall32] |
[ClassInstall32.nt] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
AddReg=add-registry-section[,add-registry-section]...
[AddProperty=add-property-section[,add-property-section] ...] (Windows Vista and later versions of Windows)
[Copyfiles=@filename | file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-section]...]
[DelProperty=del-property-section[,del-property-section] ...] (Windows Vista and later versions of Windows)
[Delfiles=file-list-section[,file-list-section]...]
[Renfiles=file-list-section[,file-list-section]...]
[BitReg=bit-registry-section[,bit-registry-section]...]
[UpdateInis=update-ini-section[,update-ini-section]...]
[UpdateIniFields=update-inifields-section[,update-inifields-section]...]
[Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...]
項目
AddReg=add-registry-section[,add-registry-section]...
參考一或多個具名區段,其中包含要寫入登錄中的類別特定值專案。 這通常用來為新的裝置安裝類別提供至少易記的名稱,讓其他元件稍後可以從登錄中擷取,並用來開啟這個新裝置類別的已安裝裝置,或為此裝置安裝類別「安裝」任何屬性頁提供者等等。
任何 add-registry-section 中的 HKR 規格會指定包含該類別設定的登錄機碼。 如需詳細資訊,請參閱下列 一 節。
如需詳細資訊,請參閱 INF AddReg 指示詞。
AddProperty=add-property-section[,add-property-section]...
(Windows Vista 和更新版本的 Windows)參考一或多個 INF 檔案區段,這些區段會修改為裝置設定類別所設定的裝置屬性。 您應該只使用 INF AddProperty 指示詞 來設定 Windows Vista 或更新版本的 Windows 作業系統的裝置安裝類別屬性。
針對先前在 Windows Server 2003、Windows XP 或 Windows 2000 上引進且具有對應登錄專案值的裝置類別屬性,您應該繼續使用 INF AddReg 指示 詞來設定裝置安裝類別屬性。 這些指導方針適用於系統定義的屬性和自定義屬性。
如需如何使用 AddProperty 指示詞的詳細資訊,請參閱使用 INF AddProperty 指示詞和 INF DelProperty 指示詞。
Copyfiles=@filename | file-list-section[,file-list-section]...
指定要從來源媒體複製到目的地的一個具名檔案,或參考來源媒體上類別相關檔案的一或多個具名區段,以便傳輸至目的地。 INF 之 DestinationDirs 區段中的 DefaultDestDir 專案會指定要複製之任何類別特定單一檔案的目的地目錄。
如需詳細資訊,請參閱 INF CopyFiles 指示詞。
注意
裝置安裝類別的系統提供的 INF 檔案不會在本節中使用這個指示詞。
DelReg=del-registry-section[,del-registry-section]...
參考在類別安裝程式安裝期間,指定要從登錄中移除值專案或機碼的一或多個具名區段。
不過,如果特定的 {SetupClassGUID} 已以已安裝的類別的形式存在,則系統安裝程式程式代碼後續會忽略任何 INF 的 ClassInstall32 區段,該 INF 在其 Version 區段中指定相同的 GUID 值。 因此,INF 無法取代現有的類別安裝程式,或從 ClassInstall32 區段修改其行為。
如需詳細資訊,請參閱 INF DelReg 指示詞。
DelProperty=del-property-section[,del-property-section]...
(Windows Vista 和更新版本的 Windows)參考一或多個 INF 檔案區段,這些區段會刪除為裝置設定類別所設定的裝置屬性。 您應該只使用 INF DelProperty 指示詞 來刪除 Windows Vista 或更新版本的 Windows 操作系統新增的裝置安裝類別屬性。
針對先前在 Windows Server 2003、Windows XP 或 Windows 2000 上引進且具有對應登錄專案值的裝置類別屬性,您應該繼續使用 INF DelReg 指示 詞來刪除裝置安裝類別屬性。 這些指導方針適用於系統定義的屬性和自定義屬性。
如需如何使用 DelProperty 指示詞的詳細資訊,請參閱使用 INF AddProperty 指示詞和 INF DelProperty 指示詞。
Delfiles=file-list-section[,file-list-section]...
參考目的地上先前安裝類別相關檔案的一或多個具名區段,以供刪除。
如需詳細資訊,請參閱 INF DelFiles 指示詞。
Renfiles=file-list-section[,file-list-section]...
參考目的地上要重新命名之類別相關檔案的一或多個具名區段。
如需詳細資訊,請參閱 INF RenFiles 指示詞。
BitReg=bit-registry-section[,bit-registry-section]...
在本節中有效,但幾乎從未使用過。
如需詳細資訊,請參閱 INF BitReg 指示詞。
UpdateInis=update-ini-section[,update-ini-section]...
在本節中有效,但幾乎從未使用過。
如需詳細資訊,請參閱 INF UpdateInis 指示詞。
UpdateIniFields=update-inifields-section[,update-inifields-section]...
在本節中有效,但幾乎從未使用過。
如需詳細資訊,請參閱 INF UpdateIniFields 指示詞。
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
在本節中有效,但幾乎從未使用過。
如需詳細資訊,請參閱 INF UpdateIniFields 指示詞。
備註
您應該只在裝置 INF 檔案中包含 ClassInstall32 區段,才能安裝新的自定義裝置安裝類別。 已安裝類別中裝置的 INF 檔案,無論是 系統提供的裝置安裝類別 還是自定義類別,都不應包含 ClassInstall32 區段。 因為系統只有在尚未安裝類別時才會處理 ClassInstall32 區段,所以您無法使用 ClassInstall32 區段重新安裝或變更已安裝之類別的設定。 特別是,您無法使用 ClassInstall32 區段,為已安裝的類別新增類別共同安裝程式或類別篩選驅動程式。 如需如何安裝共同安裝程式和篩選驅動程式的詳細資訊,請參閱 撰寫共同安裝程式 和 安裝篩選驅動程式。
通常,ClassInstall32 區段有一或多個 AddReg 指示詞,以在登錄中系統提供的 SetupClassGUID 子機碼下新增專案。 這些專案可以包含類別特定的「易記名稱」、類別安裝程式路徑、類別圖示、屬性頁提供者等等。
除了 AddReg 和 CopyFiles 之外,這裏顯示的其他指示詞很少用於 ClassInstall32 區段。
若要支持驅動程式檔案的多平臺散發,請建構平臺特定的 ClassInstall32 區段。 例如,處理 ClassInstall32 區段的所有系統 SetupAPI 函式都會先在 x86 平臺上搜尋 ClassInstall32.ntx86 區段,如果找不到 ClassInstall32.ntx86 區段,則只會檢查未編碼的 ClassInstall32 區段。 如需如何使用系統定義的 .nt、.ntx86、.ntia64、.ntamd64、.ntarm 和 .ntarm64 延伸模組的詳細資訊,請參閱建立多個平臺和操作系統的 INF 檔案。
注意
ClassInstall32 區段名稱也用於 64 位平臺上的安裝。
從 Windows 2000 開始,每個已安裝的裝置都會與 裝置安裝類別相關聯。 如果要安裝的裝置 INF 未與新的裝置類別安裝程式相關聯,或者如果 Version 區段中的 ClassGUID= 規格不符合系統定義的安裝類別 GUID,該裝置就會與名稱為 “Unknown” 的裝置安裝類別相關聯。
任何裝置類別安裝程式的 INF 通常會在其 ClassInstall32 區段中具有 AddReg 指示詞,以定義至少一個具名區段,以為其裝置類型建立易記名稱。 安裝程式代碼會自動在登錄中適當位置建立 SetupClassGUID 機碼,從安裝該設定類別的第一個裝置時,INF 版本區段中為 ClassGUID= 專案提供的值自動建立 SetupClassGUID 機碼。
INF 可以使用 ClassInstall32 區段中參考的 add-registry 區段來指定屬性頁提供者,並控制其在使用者介面中處理其裝置類別的方式。
這類類別特定的 add-registry 區段具有下列一般形式:
[SetupClassAddReg]
HKR,,,,%DevClassName% ; device-class friendly name
[HKR,,Installer32,,"class-installer.dll,class-entry-point"]
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
HKR,,Icon,,"icon-number"
[HKR,,SilentInstall,,1]
[HKR,,NoInstallClass,,1]
[HKR,,NoDisplayClass,,1]
系統會使用指定的圖示來代表您的安裝程式給使用者。
- 如果 Icon 值是正數,表示資源的資源識別碼。 如果指定 Installer32 索引鍵,或從屬性頁 DLL 擷取資源,則會從類別安裝程式 DLL 擷取資源,如果指定 EnumPropPages32 索引鍵。 值 “0” 代表 DLL 中的第一個圖示。 保留值 “1”。
- 如果 Icon 值為負數,則絕對值是SetupApi.DLL中圖標的資源識別碼。
設定類別特定登錄機碼中預先定義的 SilentInstall、 NoDisplayClass 和 NoInstallClass 布爾值專案具有下列效果:
設定 SilentInstall 會指示安裝程式傳送任何快顯訊息給安裝此類別的裝置時需要回應的使用者,無論是在類別安裝程式 INF 檔案的 DDInstall 區段中指定,或是在後續安裝之裝置的 INF 檔案中指定,這些裝置會在各自的版本區段中設定相同的 ClassGuid={ClassGUID} 規格來宣告此類別本身。 例如,CD-ROM 和磁碟裝置的系統類別安裝程式,以及系統平行埠類別安裝程式會在其各自的登錄機碼中設定 SilentInstall。
如果類別特定的安裝程式要求計算機針對它安裝的任何裝置重新啟動,其 INF 中的類別特定 add-registry 區段不能有這個值專案。
設定 NoDisplayClass 會隱藏此類別所有裝置的使用者可見顯示,方法是 裝置管理員。 例如,印表機和網路驅動程式的系統類別安裝程式(包括客戶端、服務和通訊協定)在其各自的登錄機碼中設定 NoDisplayClass。
設定 NoInstallClass 表示使用者不需要手動安裝此類型的裝置。 例如,獨佔 隨插即用 (PnP) 裝置的系統類別安裝程式會在其各自的登錄機碼中設定 NoInstallClass。
ClassInstall32 區段可以包含 AddReg 指示詞,以設定其設定類別之裝置的 DeviceType、DeviceCharacteristics 和 Security。 如需詳細資訊,請參閱 INF AddReg 指示詞。
範例
這個範例顯示 ClassInstall32 區段,以及它參考的具名區段與 AddReg 指示詞。
[ClassInstall32]
AddReg=example_class_addreg
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,Icon,,"-1"
相反地,這個範例會設定類別特定的屬性頁提供者。 此 INF 也會將類別索引鍵中的 SilentInstall 和 NoInstallClass 值項目設定為 TRUE (1)。
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,EnumPropPages32,,"ExampleBinary.Dll,ExamplePropPageProvider"
HKR,,SilentInstall,,1
HKR,,NoInstallClass,,1
HKR,,Icon,,"101"