次の方法で共有


INF DDInstall.CoInstallers セクション

注意事項

Windows 11 バージョン 22H2 以降では、このセクションを使用する ドライバー パッケージ は、 ハードウェア デベロッパー センターからの署名の対象ではなくなりました。

ユニバーサル ドライバー パッケージWindows ドライバー では、このセクションを使用できません。

この省略可能なセクションでは、配布メディアで提供される 1 つ以上のデバイス固有の共同インストーラーを登録して、既存のデバイス クラス インストーラーの操作を補完します。

[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]...]
... 

Entries

AddReg=add-registry-section[,add-registry-section]...
指定された共同インストーラーに関するレジストリ情報を格納する 1 つ以上の INF ライター定義 追加レジストリ セクション を参照します。

このような追加レジストリ セクションで指定された HKR は、インストールされているデバイスの "ソフトウェア キー" レジストリ パスを指定します。 そのため、デバイス固有の共同インストーラーの場合、このユーザーがアクセスできるデバイス/ドライバーごとの "ソフトウェア" キーに CoInstallers32 値エントリを書き込む (または変更する) のです。

クラス固有の共同インストーラーの場合、適切な ..CoDeviceInstallers\SetupClassGUID サブキーの内容を変更することによって、新しい共同インストーラーを登録します。 適切なレジストリ SetupClassGUID サブキーのパスは、参照先の add-registry セクションで明示的に指定する必要があります。

詳しくは、「INF AddReg ディレクティブ」をご覧ください。

CopyFiles=@filename | file-list-section*[,file-list-section]...
ソース共同インストーラー ファイルをターゲット コンピューター上の宛先に転送します。通常は、INF ファイル内の別の場所で 1 つ以上の INF ライター定義 ファイルリスト セクションを参照します。 このようなファイル リスト セクションでは、ソース メディアからターゲット上のコピー先ディレクトリにコピーする共同インストーラー ファイルを指定します。

ただし、共同インストーラーをインストールするシステム INF ファイルでは、 DDInstall でこのディレクティブは使用されません。CoInstallers セクション。

詳しくは、「INF CopyFiles ディレクティブ」をご覧ください。

Include=filename.inf[,filename2.inf]...
このデバイスまたは デバイス セットアップ クラスの共同インストーラーをインストールするために必要なセクションを含む 1 つ以上のシステム提供 INF ファイルを指定します。 このエントリを含む INF ファイルは、通常、 Needs を指定する必要があります。

Needs=inf-section-name[,inf-section-name]...
このデバイスのインストール中に処理する必要がある特定のセクションを指定します。 通常、このような名前付きセクションは、 Include エントリにリストされているシステム提供の INF ファイル内の DDInstall.CoInstallers セクションです。 ただし、含まれる INF の DDInstall.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]...
1 つ以上の INF-writer-define delete-registry-sectionを参照します。 このようなセクションでは、レジストリから削除する必要がある同じデバイスの以前のインストールの共同インストーラーに関する古いレジストリ情報を指定します。 このような削除レジストリ セクションで指定された 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 ファイルの製造元ごとの Models セクションのデバイス/モデル固有のエントリで参照する必要があります。

INF に DDInstall.Coinstallers セクションが含まれている場合は、プラットフォームで装飾されたセクションと装飾されていない DDInstall セクションごとに 1 つずつ存在する必要があります。 例えば、INF に [install-section-name.ntx86] セクションと [install-section-name] セクションがあり、デバイス固有のコインストーラを登録する場合、INF には [install-section-name. ntx86.Coinstallers] セクションと [install-section-name.Coinstallers] セクションの両方を含んでいなければなりません。 システム定義の .nt, .ntx86, .ntia64, .ntamd64, .ntarm, および .ntarm64 の拡張機能の使用方法の詳細については、「複数のプラットフォームとオペレーティング システム用の INF ファイルの作成」を参照してください。

DDInstall.CoInstallers セクションの各ディレクティブは、複数のINFライター定義セクション名を参照できます。 ただし、追加の名前付きセクションはそれぞれ、コンマ (,) で区切る必要があります。

ディレクティブで定義された各セクション名は、INF ファイル内で一意である必要があり、セクション名を定義するための一般的な規則に従う必要があります。 これらの規則の詳細については、「INF ファイルの一般的な構文規則」を参照してください。

共同インストーラーは Win32 DLL であり、通常は追加の構成情報をレジストリに書き込むか、INF の作成時に使用できないシステム固有の情報を動的に生成する必要があるその他のインストール タスクを実行します。 デバイス固有の共同インストーラーは、OS のデバイス インストーラー、またはそのデバイスのインストール時に適切なクラス インストーラーのいずれかのインストール操作を補完します。

共同インストーラーを記述および使用する方法の詳細については、「共同インストーラーの作成」を参照してください。

共同インストーラー イメージのインストール

すべての共同インストーラー ファイルを %SystemRoot%\system32 ディレクトリにコピーする必要があります。 INF CopyFiles 操作と同様に、INF ファイルの DestinationDirs セクションの名前付き ファイル リスト セクション に対して、 dirid11 を指定するか、 DefaultDestDir エントリにこの dirid 値を指定することで、宛先が明示的に制御されます。

デバイスに固有の共同インストーラーの登録

1 つ以上のデバイス固有の共同インストーラーを登録するには、レジストリに REG_MULTI_SZ型指定された値エントリを追加する必要があります。 次の一般的な形式を使用して、 AddReg ディレクティブによって参照される add-registry セクション を指定します。

[DDInstall.CoInstallers_DeviceAddReg]
 
HKR,,CoInstallers32,0x00010000,"DevSpecificCoInstall.dll
   [,DevSpecificEntryPoint]"[,"DevSpecific2CoInstall.dll
      [,DevSpecific2EntryPoint]"...] 

HKR エントリは INF ファイル内の 1 行として一覧表示され、指定された各デバイス固有の共同インストーラー DLL には一意の名前が必要です。 一覧表示されている共同インストーラーが登録されると、システムのデバイス インストーラーは、そのデバイスのインストール プロセスの後続の各手順でそれらを呼び出します。

省略可能な DevSpecificEntryPoint を省略すると、既定の CoDeviceInstall ルーチン名が共同インストーラー DLL のエントリ ポイントとして使用されます。

詳細については、「デバイス固有の共同インストーラーの登録」を参照してください。

Device-Class 共同インストーラーの登録

1 つ以上のデバイス クラス共同インストーラーの値エントリ (およびセットアップ クラス サブキーがまだ存在しない場合) をレジストリに追加するには、 AddReg ディレクティブによって参照される add-registry セクション に次の一般的な形式があります。

[DDInstall.CoInstallers_ClassAddReg]
 
HKLM,System\CurrentControlSet\Control
    \CoDeviceInstallers,{SetupClassGUID},
       0x00010008,"DevClssCoInst.dll[,DevClssEntryPoint]" 
 ...

このような追加レジストリ セクションの各エントリは、INF ファイル内の 1 行として一覧表示され、指定された各クラス共同インストーラー DLL には一意の名前が必要です。 指定された共同インストーラーを複数の デバイス セットアップ クラスに使用する必要がある場合、この add-registry セクションには複数のエントリがあり、それぞれに適切な SetupClassGUID 値を持つことができます。

このような補助デバイス クラス共同インストーラーは、既存のクラス インストーラーに既に登録されている共同インストーラーを置き換えてはなりません。 したがって、クラス共同インストーラーは一意の名前を持つ必要があり、指定された REG_MULTI_SZ型の値 (フラグ0x00100088 で示されているように) を、{SetupClassGUID} サブキーに既に存在するクラス固有の共同インストーラー エントリ (存在する場合) に追加する必要があります。

Note

同じ名前の 共同インストーラーが既に登録されている場合、 SetupAPI 関数は重複する DevClssCoInstall.dll を値エントリに追加しません。

補助デバイス クラス共同インストーラーの INF は、右クリック インストールまたは デバイス インストール アプリケーションによって行われた SetupInstallFromInfSection の呼び出しによってアクティブ化できます。

この例は、IrDAシリアルネットワークアダプター用の DDInstall.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 セクションのみを参照しました。

このシステム提供の INF は一連の IrDA ネットワーク デバイスをインストールするため、 CopyFiles ディレクティブはありません。 すべてのシステム INF ファイルと同様に、この INF ファイルでは、 バージョン セクションの LayoutFile エントリを使用して、共同インストーラー ファイルを変換先に転送します。

IHV や OEM から提供された INF の DDInstall.CoInstallers セクションは、 CopyFiles ディレクティブと SourceDisksNames および SourceDisksFiles セクションを必要とします。

関連項目

AddReg

BitReg

CopyFiles

DDInstall

DelFiles

DelReg

DestinationDirs

Ini2Reg

RenFiles

SourceDisksFiles

SourceDisksNames

UpdateIniFields

Version