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 寫入器定義的 add-registry-sections,儲存所提供共同安裝程式的登錄資訊。
在這類 add-registry 區段中指定的 HKR 會指定所安裝裝置的「軟體密鑰」登錄路徑。 因此,針對裝置特定的共同安裝程式,它會在此使用者可存取的個別裝置/驅動程式 “software” 密鑰中寫入 [或修改] CoInstallers32 值專案。
針對類別特定的共同安裝程式,它會修改適當 .的內容來註冊新的共同安裝程式。CoDeviceInstallers\SetupClassGUID 子機碼。 適當的登錄 SetupClassGUID 子機碼路徑必須在參考的 add-registry 區段中明確指定。
如需詳細資訊,請參閱 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。Cointallers 區段,每個平台裝飾和未裝飾 的 DDInstall 區段都必須有一個。 例如,如果 INF 包含 [install-section-name.ntx86] 區段和 [install-section-name] 區段,而且它會註冊裝置特定的共同安裝程式,則 INF 必須同時包含 [install-section-name.ntx86]。Cointallers] 區段和 [install-section-name]。Cointallers] 區段。 如需如何使用系統定義的 .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 區段中的具名 file-list-section。
註冊裝置特定的共同安裝程式
註冊一或多個裝置特定的共同安裝程式需要將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-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類型值必須附加至類別特定共同安裝程序專案,如0x0010008旗標值中的 8 所指示。如果有的話,已存在於 {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 區段。