INF DDInstall.CoInstallers 區段
此選擇性區段會註冊發佈媒體上提供的一或多個裝置特定共同安裝程式,以補充現有裝置類別安裝程序的作業。
[install-section-name.CoInstallers] |
[install-section-name.nt.CoInstallers] |
[install-section-name.ntx86.CoInstallers] |
[install-section-name.ntia64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntamd64.CoInstallers] | (Windows XP and later versions of Windows)
[install-section-name.ntarm.CoInstallers] | (Windows 8 and later versions of Windows)
[install-section-name.ntarm64.CoInstallers] (Windows 10 version 1709 and later versions of Windows)
AddReg=add-registry-section[,add-registry-section]...
CopyFiles=@filename | file-list-section[,file-list-section]...
[Include=filename.inf[,filename2.inf]...]
[Needs=inf-section-name[,inf-section-name]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-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]...
參考一或多個 INF-writer-defined add-registry-section,其會儲存所提供共同安裝程式的登錄資訊。
這類 add-registry 區段中指定的 HKR 會指定所安裝裝置的 「軟體機碼」 登錄路徑。 因此,針對裝置特定的共同安裝程式,它會寫入 (或修改) 此使用者可存取的個別裝置/驅動程式「軟體」密鑰中的 CoInstallers32 值專案。
針對類別特定的共同安裝程式,它會藉由修改適當的 內容來註冊新的共同安裝程式 。CoDeviceInstallers\SetupClassGUID 子機碼。 必須在參考的 add-registry 區段中明確指定適當登錄 SetupClassGUID 子機碼的路徑。
如需詳細資訊,請參閱 INF AddReg 指示詞。
CopyFiles=@filename | file-list-section*[,file-list-section]...
將來源共同安裝程式檔案傳輸至目標計算機上的目的地,通常是藉由參考 INF 檔案中其他位置的一或多個 INF 寫入器定義 檔案清單區段。 這類檔案清單區段會指定要從來源媒體複製到目標目的地目錄的共同安裝程序檔案。
不過,安裝共同安裝程序的系統 INF 檔案永遠不會在 DDInstall 中使用這個指示詞。CoInstallers 區段。
如需詳細資訊,請參閱 INF CopyFiles 指示詞。
Include=filename。inf[,filename2.inf]...
指定一或多個系統提供的 INF 檔案,其中包含安裝此裝置或 裝置安裝類別共同安裝程式所需的區段。 具有這個專案的 INF 檔案通常應該指定 Needs。
Needs=inf-section-name[,inf-section-name]...
指定此裝置安裝期間必須處理的特定區段。 一般而言,這類具名區段是 DDInstall。包含在Include 專案中列出的系統提供 INF 檔案內的 CoInstallers 區段。 不過,它可以是這類 DDInstall 內參考的任何區段。內含 INF 的 CoInstallers 區段。
DelFiles=file-list-section[,file-list-section]...
參考檔案清單區段,指定要從目標中移除的檔案。 很少使用這個指示詞。
如需詳細資訊,請參閱 INF DelFiles 指示詞。
RenFiles=file-list-section[,file-list-section]...
參考檔案清單區段,指定目的地上要重新命名的檔案,再將共同安裝程式來源檔案複製到目標。 此指示詞也很少使用。
如需詳細資訊,請參閱 INF RenFiles 指示詞。
DelReg=del-registry-section[,del-registry-section]...
參考一或多個 INF-writer-define delete-registry-sections。 這類區段會指定先前應從登錄中移除之相同裝置之共同安裝程式的過時登錄資訊。 在這類 delete-registry 區段中指定的 HKR 會指定與 AddReg 專案所述相同的登錄子機碼。 此指示詞很少用於 DDInstall。CoInstallers 區 段。
如需詳細資訊,請參閱 INF DelReg 指示詞。
BitReg=bit-registry-section[,bit-registry-section]...
此專案在本節中有效,但幾乎從未使用過。 這類位登錄區段中指定的 HKR 會指定與 AddReg 專案所述相同的登錄子機碼。
如需詳細資訊,請參閱 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 Ini2Reg 指示詞。
備註
指定的 DDInstall 區段必須在 INF 檔案之每一製造商 型號 區段下的裝置/型號特定項目中參考。
如果 INF 包含 DDInstall。一 節中,每個平台裝飾且未經過修改 的 DDInstall 區段都必須有一個。 例如,如果 INF 包含 [install-section-name.ntx86] 區段和 [install-section-name] 區段,並註冊裝置特定的共同安裝程式,則 INF 必須同時包含 [install-section-name.ntx86]。一 節和 [install-section-name]。一 節。 如需如何使用系統定義 .nt、.ntx86、.ntia64、.ntamd64、.ntarm 和 .ntarm64 延伸模組的詳細資訊,請參閱建立多個平臺和操作系統的 INF 檔案。
DDInstall 中的每個指示詞。CoInstallers 區段可以參考多個 INF 寫入器定義的區段名稱。 不過,每個額外的具名區段都必須以逗號分隔 (,) 。
每個指示詞建立的區段名稱在 INF 檔案內必須是唯一的,而且必須遵循定義區段名稱的一般規則。 如需這些規則的詳細資訊,請參閱 INF 檔案的一般語法規則。
共同安裝程式是 Win32 DLL,通常會將額外的組態資訊寫入登錄,或執行需要動態產生、系統特定資訊的其他安裝工作,這些資訊在建立 INF 時無法使用。 裝置特定的共同安裝程式可補充操作系統裝置安裝程式的安裝作業,或安裝該裝置時的適當類別安裝程式。
如需如何撰寫和使用共同安裝程式的詳細資訊,請參閱 撰寫共同安裝程式。
安裝共同安裝程式映像
所有共同安裝程式檔案都必須複製到 %SystemRoot%\system32 目錄中。 就像任何 INF CopyFiles 作業一樣,透過 dirid 值 11 或提供 DefaultDestDir 專案的這個dirid 值,在 INF 檔案的 DestinationDirs 區段中明確控制具名檔案清單區段的目的地。
註冊 Device-Specific 共同安裝程式
註冊一或多個裝置特定的共同安裝程式需要將 REG_MULTI_SZ類型的值專案新增至登錄。 使用下列一般形式,指定 AddReg 指示詞所參考的 add-registry-section:
[DDInstall.CoInstallers_DeviceAddReg]
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
[,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
[,DevSpecific2EntryPoint]"...]
HKR 專案會列為 INF 檔案內的單行,而且每個提供的裝置特定共同安裝程式 DLL 都必須有唯一的名稱。 註冊列出的共同安裝程式之後,系統的裝置安裝程式會在該裝置的安裝程序後續步驟呼叫它們。
如果省略選擇性 的 DevSpecificEntryPoint ,則會使用預設 CoDeviceInstall 例程名稱作為共同安裝程式 DLL 的進入點。
如需詳細資訊,請參閱 註冊 Device-Specific 共同安裝程式。
註冊 Device-Class 共同安裝程式
若要將值專案新增至登錄 (和 setup-class 子機碼,如果尚未) 一或多個裝置類別共同安裝程式至登錄,AddReg 指示詞所參考的 add-registry-section 具有下列一般形式:
[DDInstall.CoInstallers_ClassAddReg]
HKLM,System\CurrentControlSet\Control
\CoDeviceInstallers,{SetupClassGUID},
0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]"
...
這類 add-registry 區段中的每個項目都會列為 INF 檔案內的單行,而且每個提供的類別共同安裝程式 DLL 都必須有唯一的名稱。 如果提供的共同安裝程式應該用於多個 裝置安裝類別,這個 add-registry 區段可以有多個專案,每個專案都有適當的 SetupClassGUID 值。
這類補充裝置類別共同安裝程式不得取代現有類別安裝程式的任何已註冊共同安裝程式。 因此,類別共同安裝程式必須具有唯一的名稱,而且所提供的REG_MULTI_SZ類型值必須附加 (,如旗標值中的8 所指示,0x0010008) 至類別特定的共同安裝程序專案,如果有的話,就已經存在於 {SetupClassGUID} 子機碼中。
注意
如果已註冊相同名稱的共同安裝程式, SetupAPI 函式永遠不會將重複的 DevClssCoInstall.dll 附加至值專案。
補充裝置類別共同安裝程式的 INF 可以透過按兩下滑鼠右鍵安裝,或透過呼叫由裝置安裝應用程式建立的 SetupInstallFromInfSection 來啟用。
範例
此範例顯示 DDInstall。IrDA 序列網路適配器的 CoInstallers 區段。 這些 IrDA (序列) NIC 的系統提供的 INF 會將共同安裝程式提供給系統 IrDA 類別安裝程式。
; DDInstall section
[PNP.NT]
AddReg=ISIR.reg, Generic.reg, Serial.reg
PromptForPort=0 ; This is handled by IRCLASS.DLL
LowerFilters=SERIAL ; This is handled by IRCLASS.DLL
BusType=14
Characteristics=0x4 ; NCF_PHYSICAL
; ... PNP.NT.Services section omitted here
[PNP.NT.CoInstallers]
AddReg = ISIR.CoInstallers.reg
; ...
[IRSIR.reg]
HKR, Ndi, HelpText, 0, %IRSIR.Help%
HKR, Ndi, Service, 0, "IRSIR"
HKR, Ndi\Interfaces, DefUpper, 0, "ndisirda"
HKR, Ndi\Interfaces, DefLower, 0, "nolower"
HKR, Ndi\Interfaces, UpperRange, 0, "ndisirda"
HKR, Ndi\Interfaces, LowerRange, 0, "nolower"
[Generic.reg]
HKR,,InfraredTransceiverType,0,"0"
[Serial.reg]
HKR,,SerialBased,0, "0"
[ISIR.CoInstallers.reg]
HKR,,CoInstallers32,0x00010000,"IRCLASS.dll,IrSIRClassCoInstaller"
; ... Services and Event Log registry sections omitted here
[Strings]
; ...
IRSIR.Help = "An IrDA serial infrared device is a built-in COM port or
external transceiver which transmits infrared pulses. This NDIS
miniport driver installs as a network adapter and binds to the FastIR
protocol."
上述 PNP。Nt。CoInstallers 區段只參考共同安裝程式特定的 add-registry 區段。
它沒有 CopyFiles 指示詞,因為這個系統提供的 INF 會安裝一組 IrDA 網路裝置。 如同所有系統 INF 檔案,此 INF 檔案會使用其 Version 區段中的 LayoutFile 專案,將共同安裝程式檔案傳送至目的地。
任何 DDInstall。 IHV 或 OEM 所提供 INF 中的 CoInstallers 區段需要 CopyFiles 指示詞,也需要 SourceDisksNames 和 SourceDisksFiles 區段。