INF ファイルで KMDF Co-installer の指定
Note
ドライバーが Windows 10 のみをターゲットとする場合は、WDF を再配分したり、ドライバー パッケージに共同インストーラーを提供したりする必要はありません。 Windows 10 をターゲットにするには:
- Visual Studio のプロジェクト設定プロパティページで、ドライバー設定 ->ターゲットOSバージョンの下で、Windows 10 以降を選択します。 これは、.vcxprojファイルに以下を追加することと同じです:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
- 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_wdfsect をWdf-install-section 名として指定します。
[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0
INX ファイルと Stampinf ツールを使用して、フレームワークの複数のバージョンに対して複数の INF ファイルを作成することを回避できます。 INX ファイルの詳細については、「INX ファイルを使用した INF ファイルの作成」を参照してください。
INF DDInstall のサンプル。CoInstallers と DDInstall。Wdf セクション
次のコード例は、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 ===============