第 9 章 実行に当たっての問題
14.2 Windowsの場合
注意:
この章の説明の “wdreg” と記述している個所を “wdreg_gui” に置き換えることができます。同じ機 能ですが、コンソール モード メッセージの代わりに GUI メッセージが表示されます。
WinDriver のカーネル モジュール (windrvr6.sys) の名前を変更する場合、windrvr6 に関連す
る参照を対象のドライバ名に置き換え、WinDriver\redist ディレクトリへの参照を変更したインス トール ファイルを含むディレクトリのパスに置き換えてください。たとえば、DriverWizard で生成したドラ イバ プロジェクトに名前を変更したドライバ ファイルを使用する場合、WinDriver\redist への参 照を生成された xxx_installation\redist ディレクトリに置き換えてください (xxx は生成され たドライバ プロジェクトの名前です) 。
新しい INF ファイルと (または) カタログ ファイルを作成した場合、オリジナルの WinDriver の INF ファ イルへの参照と (または) wd1170.cat ファイルへの参照を新たしいファイル名に置き換えてください (詳細は、セクション 15.2.1 と 15.3.2 を参照してください)。
作成したドライバを配布するには、いくつかのステップを行う必要があります。まずドライバをターゲット シス テムにインストールする配布パッケージを作成します。次に、ターゲット マシンにドライバをインストールしま す。このプロセスは windrvr6.sys と windrvr6.inf 、デバイス用 (Plug-and-Play ハードウェア – PCI / USB 用) の INF ファイル、Kernel PlugIn ドライバ (作成した場合) をインストールします。最後に WinDriver で開発したハードウェア コントロールアプリケーション をインストールして実行します。これら全ての手順は、
wdreg ユーティリティで行えます。
注意: このセクションでは *.sys ファイルの配布について説明しています。WinDriver のバージョン 6.21 以 降より *.vxd ドライバはサポートされていません。
14.2.1 配布パッケージの用意
配布するパッケージには、次のファイルを含めます。
注意: 32-bit と 64-bit の両方のターゲット プラットフォームにドライバを配布する場合、各プラットフォーム用 にそれぞれ WinDriver のインストール パッケージを別々に用意してください。各パッケージに必要なファイ ルは、それぞれのプラットフォーム用の WinDriver のインストール ディレクトリ以下にあります。
ハードウェア コントロール アプリケーション / DLL
windrvr6.sys (WinDriver\redist ディレクトリにあります)。
windrvr6.inf (WinDriver\redist ディレクトリにあります)。
wd1170.cad (WinDriver\redist ディレクトリにあります) 。
wd_api1170.dll (WinDriver\redist ディレクトリにあります。32 ビット バイナリを 32 ビット のターゲット プラットフォーム、64 ビット バイナリを 64 ビットのプラットフォームに配布します)。
wdapi1170_32.dll (WinDriver\redist ディレクトリにあります。32 ビット バイナリを 64 ビッ トのターゲット プラットフォームに配布します)。
difxapi.dll (wdreg.exe ユーティリティに必要。WinDriver\util ディレクトリにありま す)。
デバイス用の INF ファイル (PCI / PCMCIA / USB などの Plug-and-Play デバイスには必要です)。
DriverWizard でこのファイルを生成します。詳細は、セクション 5.2 を参照してください。
Kernel PlugIn ドライバ (<KD ドライバ名>.sys) (作成した場合)
14.2.2 ターゲット コンピュータにドライバをインストール
注意: ドライバをターゲット コンピュータにインストールするにはターゲット コンピュータの管理者権限が必要 です。
以下の手順に従い、ターゲットコンピュータにドライバをインストールします。
インストールの前に
ドライバをインストールする際には、WinDriver のサービス (windrvr6.sys または名前変更した ドライバ) へのハンドルが開いていないことをご確認ください。また、WinDriver のサービスと動作 するように登録したPlug-and-Play デバイスが接続されていない、および有効になっていないことを ご確認ください。たとえば、これはドライバのバージョンをアップグレードする際にも関連します (WinDriver v6.00 およびそれ以降の場合に当てはまります。それ以前のバージョンでは、モジュー ル名が異なります)。サービスが使用されている場合には、wdreg を使用して新しいドライバをイン ストールすると失敗します。デバイス マネージャから接続したデバイスを無効またはアンインストー ルするか ([プロパティ] – [無効] または [削除]) 、もしくは PC からデバイスを物理的に切断します。
WinDriver のカーネルモ ジュールのインストール:
① windrvr6.sys、windrvr6.inf と wd1170.cat ファイルを同じディレクトリにコピーしま す。
注意: wd1170.cat には、ドライバ認証のデジタル署名が含まれます。署名の認証を維持 するには、windrvr6.inf ファイルと同じインストール ディレクトリにおく必要があります。カ タログ ファイルと INF ファイルを異なるディレクトリに配布する場合、またはこれらのファイルを 変更またはカタログ ファイルによって参照されるファイル (windrvr6.sys など) を変更する 場合、以下のいずれかの処理が必要です:
新しいカタログ ファイルを作成し、このファイルを使用してドライバを再署名する 。
windrvr6.inf ファイルの以下の行をコメントアウトか削除します:
CatalogFile = wd1170.cat
そして、ドライバの配布にカタログ ファイルを含めません。ただし、この場合、インストー ルではドライバのデジタル署名を使用しないので、推奨いたしません。
ドライバのデジタル署名と認証および対象の WinDriver ベースのドライバの署名に関して は、マニュアルのセクション 15.3 を参照してください。
② wdreg ユーティリティを使用して、ターゲット コンピュータに WinDriver のカーネル モジュー ルをインストールします。
wdreg -inf <windrvr6.inf のパス> install
た と え ば 、windrvr6.inf お よ び windrvr6.inf を タ ー ゲ ッ ト コ ン ピ ュ ー タ の d:\MyDevice\ ディレクトリにある場合、以下のようになります。
wdreg -inf d:\MyDevice\windrvr6.inf install
WinDriver ツールキットの WinDriver\util ディレクトリ以下にがあります。このユーティリ
ティの一般的な説明および使用方法に関しては、第 13 章 を参照してください。
注意:
wdreg は、difxapi.dll DLL に依存します。
wdreg は対話型のユーティリティです。問題があるとメッセージを表示して問題を解決 する方法を示します。場合によってはコンピュータの再起動を指示します。
注意: ドライバの配布時に、新しいバージョンの windrvr6.sys を Windows ドライバ ディレ クトリ (%windir%\system32\driver) の古いバージョンのファイルで上書きしないように ご注意ください。インストール プログラムまたは INF ファイルでインストーラが自動的にタイム スタンプを比較して新しいバージョンを古いバージョンで上書きしないように設定することを推 奨いたします。
windrvr6.sys ファイルは COPYFLG_NO_VERSION_DIALOG INF ディレクティブを使用 します。これは、コピー先の既存のファイルがコピー元のファイルよりも新しい場合、コピー元 のファ イルでコピー先の ファ イ ルを上書きしないよ うにデ ザ インされています。同様 に COPYFLG_OVERWRITE_OLDER_ONLY INF ディレクティブがあります。これは、コピー先の ファイルがより新しいバージョンに取って代えられる場合のみ、コピー元のファイルをコピー先 のディレクトリへコピーするようにデザインされています。ただし、これらの INF ディレクティブ の両方は、デジタル署名されたドライバには適用されませんので、ご注意ください。Microsoft の INF CopyFiles Directive ドキュメントの説明のとおり
(http://msdn.microsoft.com/en-us/library/ff546346%28v=vs.85%29.aspx)、ドライバ パッケー ジがデジタル署名されている場合、Windows はパッケージ全体をインストールし、対象のコン ピュータに既に他のバージョンが存在する場合でもパッケージのファイルを選択して除外しま せん。Jungo Connectivity から提供する windrvr6.sys ドライバはデジタル署名されていま す。
対象のデバイスの INF ファイルのインストール (windrvr6.sys と動作するように登録した Plug and Play デバイス):
対象の INF ファイルを自動的にインストールし Windows デバイス マネージャを更新するには、以 下のように wdreg を起動して、install コマンドを実行します。
wdreg -inf <対象の INF ファイルのパス> install
preinstall コマンドを実行して、PC に接続されていないデバイスの INF ファイルを pre-install することができます。
wdreg -inf <対象の INF ファイルのパス> preinstall
注 意 : ERROR_FILE_NOT_FOUND エ ラ ー で イ ン ス ト ー ル に 失 敗 す る 場 合 、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion に
RunOnce キーが存在するが Windows のレジストリを確認してください。INF ファイルを使用して 正しくドライバをインストールするには、Windows Plug-and-Play にはこのレジストリ キーが必要で す。RunOnce キーがない場合、作成して、再度 INF ファイルをインストールしてください。
Kernel PlugIn ドライバのインストール:
Kernel PlugIn ドライバを作成した場合は、セクション 14.2.3 の手順に従って、ドライバをインストー ルします。
Wdapi1170.dll のインストール:
(サンプルおよび DriverWizard で生成された WinDriver のプロジェクトのように) ハードウェア コン トロール アプリケーション / DLL が wdapi1170.dll を使用する場合、この DLL をターゲット の %windir%\system32 ディレクトリにコピーします。
32 ビット アプリケーション / DLL を 64 ビットのターゲット プラットフォームに配布する場合は、
wdapi1170_32.dll から wdapi1170.dll に名前を変更し、ターゲットの %windir%\
sysWOW64 ディレクトリにコピーします。
注意: 64 ビットのプログラムをインストールする 32 ビットのインストール プログラムを作成し、64 ビッ トの wdapi1170.dll を %windir%\system32 ディレクトリにコピーすると、ファイルは実際に は 32 ビットの %windir%\sysWOW64 ディレクトリにコピーされます。これは、Windows x64 プラッ トフォームでは 64 ビットのディレクトリを参照する 32 ビットのコマンドを、32 ビットのディレクトリを参 照するように変換するためです。これを回避するには、WinDriver\redist ディレクトリにある system64.exe プログラムを使用し、64 ビットのコマンドを使用してインストールを実行します。
ハードウェア コントロール アプリケーション / DLL のインストール:
ハードウェア コントロール アプリケーション / DLL をターゲットにコピーして、実行します。
14.2.3 ターゲット コンピュータに Kernel PlugIn をインストール
注意: ドライバをターゲット コンピュータにインストールするにはターゲット コンピュータの管理者権限が必要 です。
Kernel PlugIn ドライバを作成した場合、以下の手順に従ってください。
1. Kernel PlugIn ドライバ (<KP ドライバ名>.sys) をターゲット コンピュータの Windows ドライバ ディレク トリにコピーします (%windir%\system32\drivers)。
2. wdreg ユーティリティを使用して、Windows の起動時にデバイス ドライバのリストにKernel PlugIn ドライ バを追加します。次のコマンドを使用します。
SYS Kernel PlugIn ドライバをインストールする場合:
wdreg -name <ドライバ名 (sys 拡張子は付けません)> install
wdreg の実行ファイルは、WinDriver\util ディレクトリにあります。このユーティリティの説明 と使用方法は、第 13 章 を参照してください (特に、セクション 13.2.3 の「Kernel PlugIn のインス トール」を参照してください)。