INF DDInstall.Interfaces セクション
モデルごとの 各DDInstall.Interfaces セクションには、特定のデバイス/ドライバーがサポートするデバイス インターフェイスの数に応じて、1 つ以上の AddInterface ディレクティブを指定できます。
[install-section-name.Interfaces] |
[install-section-name.nt.Interfaces] |
[install-section-name.ntx86.Interfaces] |
[install-section-name.ntia64.Interfaces] | (Windows XP and later versions of Windows)
[install-section-name.ntamd64.Interfaces] | (Windows XP and later versions of Windows)
[install-section-name.ntarm.Interfaces] | (Windows 8 and later versions of Windows)
[install-section-name.ntarm64.Interfaces] (Windows 10 version 1709 and later versions of Windows)
AddInterface={InterfaceClassGUID} [, [reference string] [,[add-interface-section] [,flags]]] ...
[Include=filename.inf[,filename2.inf]...]
[Needs=inf-section-name[,inf-section-name]...]
システムの定義済みのカーネル ストリーミング インターフェイスなど、既存のデバイス インターフェイスをサポートするには、このセクションで適切な InterfaceClassGUID 値を指定します。
デバイス インターフェイスの新しいクラスをエクスポートするクラス ドライバーなどのコンポーネントをインストールするには、INFに INF InterfaceInstall32セクションも必要です。
デバイス インターフェイスの詳細については、「デバイス インターフェイス クラス」を参照してください。
エントリ
AddInterface={InterfaceClassGUID} [,[参照文字列] [,[add-interface-section] [,flags_]]]...
このディレクティブは、ドライバーが上位レベルのコンポーネントにエクスポートする指定された InterfaceClassGUID 値によって指定されたデバイス インターフェイス クラスのサポートをインストールします。 通常は、INF ファイル内の他の場所で INF ライター定義 の add-interface-section も参照します。 このディレクティブを指定する方法の詳細については、 INF AddInterface ディレクティブを参照してください。
Include=,filename。inf[,filename2.inf]...
この省略可能なエントリは、このデバイス/ドライバーでサポートされているインターフェイス クラスを登録するために必要なセクションを含む 1 つ以上のシステム提供 INF ファイルを指定します。 このエントリが指定されている場合、通常は Needs エントリも指定されます。
Needs=,inf-section-name[,inf-section-name]...
この省略可能なエントリは、このデバイス クラスのインストール中に処理する必要がある特定のセクションを指定します。 通常、このような名前付きセクションは、 Include エントリにリストされているシステム提供の INF ファイル内の DDInstall_.Interfaces セクションです。 ただし、含まれる INF の DDInstall_.Interfaces セクション内で参照される任意のセクションにすることができます。
解説
DDInstall セクション名は、INF ファイルの製造元ごとの Models セクションのデバイス/モデル固有のエントリによって参照されている必要があります。 クロスプラットフォーム INF ファイルでシステム定義の .nt、 .ntx86、 .ntia64、 .ntamd64、 .ntarm、および .ntarm64 拡張機能を使用する方法については、「複数のプラットフォームとオペレーティング システム用の INF ファイルの作成」を参照してください。
指定した {,InterfaceClassGUID_} がまだインストールされていない場合、オペレーティング システムのセットアップ コードによって、そのデバイス インターフェイス クラスがシステムにインストールされます。 INF ファイルが 1 つ以上の新しいデバイス インターフェイス クラスをインストールする場合、新しいクラスの GUID を識別する [InterfaceInstall32] セクションを含めることもできます。
GUID を作成する方法の詳細については、「ドライバーでの GUID の使用」を参照してください。 システム定義インターフェイス クラス GUID については、カーネル ストリーミング インターフェイス GUID の Ks.h などの適当なシステム供給ヘッダーを参照してください。
ドライバーが読み込まれると、デバイス インターフェイスの完全な SymbolicLinkName を取得するために、同じ {,InterfaceClassGUID_} と AddInterface ディレクティブで使用される 参照文字列 を使用して IoRegisterDeviceInterface を呼び出す必要があります。 INFの ,DDInstall_.Interfaces セクションにある、基盤デバイスでドライバがサポートする各デバイス・インターフェースに対してこれを行わなければなりません。 各 SymbolicLinkName について、ドライバーは IoSetDeviceInterfaceState を呼び出してデバイス インターフェイスを有効にする必要があります。 通常、PnP 関数またはフィルター ドライバーは、その AddDevice ルーチンからこれらの呼び出しを行います。
例
この例は、システムが提供するWDMオーディオデバイス/ドライバー用のINFファイルの DDInstall.nt.Interfaces セクションです。
;
; following AddInterface= are all single lines (without
; backslash line continuators) in the system-supplied INF file
;
[WDMPNPB003_Device.NT.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,\
WDM_SB16.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,\
WDM_SB16.Interface.Topology
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_UART%,\
WDM_SB16.Interface.UART
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_FMSynth%,\
WDM_SB16.Interface.FMSynth
; ...
[Strings] ; only immediately preceding %strkey% tokens shown here
%KSCATEGORY_AUDIO% = "{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSNAME_Wave = "Wave"
KSNAME_UART = "UART"
KSNAME_FMSynth = "FMSynth"
KSNAME_Topology = "Topology"
; ...