フレームワークの共同インストーラーのインストール

カーネル モード ドライバー フレームワークのドライバーの共同インストーラーは、Windows Driver Kit (WDK) と共に配布されます。ドライバー パッケージには、ドライバーの .sys ファイルおよび INF ファイルと同じディレクトリに、この共同インストーラーを含める必要があります。

共同インストーラーのファイル名の形式は次のとおりです。

WdfCoInstaller<メジャー バージョン番号><マイナー バージョン番号>.dll

メジャー バージョン番号は 2 文字、マイナー バージョン番号は 3 文字で表します。たとえば、Version 1.0 の共同インストーラーのファイル名は WdfCoInstaller01000.dll、その後 Version 3.2 がリリースされた場合のファイル名は WdfCoInstaller03002.dll となります。

ドライバー パッケージには、ドライバーの開発に使用したフレームワーク ライブラリのバージョンと同じバージョンの共同インストーラーを含める必要があります。

(フレームワーク ライブラリのファイル名には、メジャー バージョン番号だけが含まれています。ライブラリのファイル名の詳細については、「フレームワーク ライブラリのバージョン」を参照してください。)

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

ドライバーの INF ファイルには、共同インストーラーをインストールする INF DDInstall .CoInstallers セクションを含める必要があります。たとえば、このセクションとして MyDevice.ntx86.CoInstallers という名前のセクションを含めることができます。INF ファイルで共同インストーラーを指定する方法の詳細については、「INF DDInstall.CoInstallers セクション」(英語の可能性あり) を参照してください。

さらに、共同インストーラーがインストール後に読み込むセクションとして、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"、"2.2" など) を表します。

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

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

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

INFDDInstall.CoInstallers セクションおよびDDInstall.Wdf セクションの例

次のコード例では、PnP ドライバーの INF ファイルで INF DDInstall .CoInstallers セクションと INF DDInstall .Wdf セクションを指定する方法を示します。この例は、MyDevice.inf という名前の INF ファイルを作成する方法を示しており、ECHO サンプル ドライバーの Echo.inf ファイルを基に作成されています。Echo サンプル ドライバーは、WDK の samples ディレクトリにあります。

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_Device.NT.Wdf]
KmdfService = MyDevice, MyDevice_wdfsect
[MyDevice_wdfsect]
KmdfLibraryVersion = 1.0
....
....
=============== End of MyDevice.inf ===============