INF ファイルでの KMDF 共同インストーラーの指定

Note

ドライバーが Windows 10 のみをターゲットとする場合は、WDF を再配分したり、ドライバー パッケージに共同インストーラーを提供したりする必要はありません。 Windows 10 をターゲットにするには:

  1. Visual Studio のプロジェクト設定プロパティページで、ドライバー設定 ->ターゲットOSバージョンの下で、Windows 10 以降を選択します。 これは、.vcxprojファイルに以下を追加することと同じです:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
  1. INF Manufacturer Sectionで、次のようにターゲット OS バージョンとして 10.0 を指定します:
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.10.0

ドライバー パッケージに共同インストーラーを含める場合は、ドライバーの INF ファイルで指定する必要があるセクションの詳細については、このトピックをお読みください。 この情報は、Microsoft 提供の .msu 再配分可能ファイルを呼び出す独自のセットアップ アプリケーションを提供する場合には適用されません。

共同インストーラーの INF ファイル セクション

ドライバーの INF ファイルには、共同インストーラーをインストールする INF DDInstall.CoInstallersセクションを含める必要があります 。 たとえば、このセクションには MyDevice.ntx86.CoInstallersという名前を付ける場合があります。 INF ファイルで共同インストーラーを指定する方法の詳細については、INF DDInstall.CoInstallers Sectionをご参照ください。

さらに、ドライバーの INF ファイルには、共同インストーラーがインストールされた後に読み取る INF DDInstall.Wdf セクションを含める必要があります。 たとえば、このセクションには MyDevice.ntx86.Wdfという名前を付ける場合があります。 フレームワークの共同インストーラーがインストールされた後、ドライバーのインストール中にこのセクションを読み取ります。

INF DDInstall.Wdfセクションには、次のディレクティブが含まれています:

  • KmdfService =DriverService,Wdf-install-section

DriverService は、オペレーティング システムがドライバーのカーネル モード サービスに割り当てる名前を表し、Wdf-install-sectionは、ドライバーに関する情報を取得するために共同インストーラーが読み取る INF セクションの名前を表します。

Wdf-install-sectionが識別するINF セクションには、次のディレクティブを含める必要があります:

  • KmdfLibraryVersion =WdfLibraryVersion

WdfLibraryVersion は、「1.0」や「1.11」 などのライブラリ バージョン番号を表します。

たとえば、次のINF DDInstall.Wdf セクションは、 Echo_wdfsectWdf-install-section 名として指定します。

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

INX ファイルと Stampinf ツールを使用して、フレームワークの複数のバージョンに対して複数の INF ファイルを作成することを回避できます。 INX ファイルの詳細については、「INX ファイルを使用した INF ファイルの作成」を参照してください。

Sample INFDDInstall.CoInstallers andDDInstall.Wdf Sections

次のコード例は、PnP ドライバーのための INF ファイルの INF DDInstall.CoInstallers section and INF DDInstall.Wdfセクションを作成する方法を示しています。 この例は、MyDevice.infと呼ばれ、ECHOサンプル ドライバーの Echo.inf ファイルに基づく INF ファイルを作成する方法を示しています。 Echo サンプル ドライバーは、WDK の サンプル ディレクトリにあります。

MyDevice.infを作成するには、Echo.infのすべてのECHO_Device部分文字列を、製品に適した名前に変更する必要があります。 次のコード例は、MyDeviceを使用します。

Echo.inf サンプルで使用されるセクション レイアウトと一致するようにする必要があります。 つまり、可能であれば、共同インストーラー関連のセクションをまとめることで、カットやペーストのエラーをより簡単に見つけることができます。

echo.infを変更する前に、共同インストーラーをインストールするセクションは次のとおりです:

=============== Top of Echo.inf ====================
....
....
[DestinationDirs]
DefaultDestDir = 12
ECHO_Device_CoInstaller_CopyFiles = 11
....
....
;
;--- ECHO_Device Co-installer installation ------
;
[ECHO_Device.NT.CoInstallers]
AddReg=ECHO_Device_CoInstaller_AddReg
CopyFiles=ECHO_Device_CoInstaller_CopyFiles

[ECHO_Device_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[ECHO_Device_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

===============  End of Echo.inf ===============

すべてのECHO_Device部分文字列を変更した後、MyDevice.infファイルは次のように表示されます:

=============== Top of MyDevice.inf ===============
....
....
[DestinationDirs]
DefaultDestDir = 12
MyDevice_CoInstaller_CopyFiles = 11
....
....
;
;--- MyDevice Co-installer installation ------
;
[MyDevice.NT.CoInstallers]
AddReg=MyDevice_CoInstaller_AddReg
CopyFiles=MyDevice_CoInstaller_CopyFiles

[MyDevice_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[MyDevice_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[MyDevice.NT.Wdf]
KmdfService = MyDevice, MyDevice_wdfsect
[MyDevice_wdfsect]
KmdfLibraryVersion = 1.0
....
....
=============== End of MyDevice.inf ===============