第 9 章 実行に当たっての問題
14.2 Windows の場合
注意:
z Windows 2000 / XP / Server 2003 / Vista の場合、この章の説明の “wdreg” と記述している個所を
“wdreg_gui” に置き換えることができます。同じ機能ですが、コンソール モード メッセージの代わり に GUI メッセージが表示されます。
z Windows 98 / Me の場合、この章の説明の “wdreg” と記述している個所を “wdreg16” に置き換えて
ください。詳細は、wdreg ユーティリティの説明、第 13 章を参照してください。
z WinDriver のインストール ディレクトリには、redist\ と redist_win98_compat\ の二つの配布
ディレクトリが含まれます。
WinDriver\redist ディレクトリには、Windows 2000 / XP / Server 2003 / Vista 用の署名入り の WHQL 互換の windrvr6.sys ドライバと関連 INF およびカタログ ファイルが含まれます。
WinDriver\redist_win98_compat ディレクトリには、Windows 98 / Me / 2000 / XP / Server 2003 / Vista 用の署名なしの windrvr6.sys ドライバと関連 INF が含まれま す。
Windows 98 / Me にドライバを配布する際には、このドキュメントの WinDriver\redist の記述 を WinDriver\redist_win98_compat に置き換えてください。Windows 2000 / XP / Server 2003 / Vista 用にもこのディレクトリのファイルを使用することもできますが、これらのプ ラットフォームには、WinDriver\redist ディレクトリ以下のファイルを使用することを推奨いたしま す。
z Windows 2000 / XP / Server 2003 / Vista で WinDriver のカーネルモジュール
(windrvr6.sys) の名前を変更する場合、windrvr6 に関連する参照を対象のドライバ名に置き
換え、WinDriver\redist ディレクトリへの参照を変更したインストールファイルを含むディレクトリ
のパスに置き換えてください。たとえば、DriverWizard で生成したドライバプロジェクトに名前を変更し たドライバ ファイルを使用する場合、WinDriver\redist への参照を生成された
xxx_installation\redist ディレクトリに置き換えてください (xxx は生成されたドライバ プロ ジェクトの名前です) 。DriverWizard を使用して変更したドライバファイルを使用する場合、
windrvr6.inf ファイルに相当するファイルの名前を xxx_driver.inf に変更します。さらに、
wd900.cat ファイルへの参照を対象のドライバ用の新しいカタログ ファイルに置き換えるか、もしく は、カタログ ファイルの配布を行わないようにします。
作成したドライバを配布するには、いくつかのステップを行う必要があります。まずドライバをターゲットシス テムにインストールする配布パッケージを作成します。次に、ターゲットマシンにドライバをインストールしま す。このプロセスは windrvr6.sys と windrvr6.inf 、デバイス用 (Plug-and-Play ハードウェア – PCI / USB 用) の INF ファイル、Kernel PlugIn ドライバ (作成した場合) をインストールします。最後に WinDriver で開発したハードウェアコントロールアプリケーションをインストールして実行します。これら全ての手順は、
wdreg ユーティリティで行えます。
注意: このセクションでは *.sys ファイルの配布について説明しています。WinDriver のバージョン 6.21 以 降より *.vxd ドライバはサポートされていません。
14.2.1 配布パッケージの用意
配布するパッケージには、次のファイルを含めます。
z ハードウェアコントロールアプリケーション / DLL
z windrvr6.sys (WinDriver\redist ディレクトリにあります) z windrvr6.inf (WinDriver\redist ディレクトリにあります)
z wd900.cad (Windows 2000 / XP / Server 2003 / Vista。WinDriver\redist ディレクトリにあり ます)
z wd_api900.dll (WinDriver\redist ディレクトリにあります。32 ビット バイナリを 32 ビットの ターゲット プラットフォーム、64 ビット バイナリを 64 ビットのプラットフォームに配布します。) wdapi900_32.dll (WinDriver\redist ディレクトリにあります。32 ビットバイナリを 64 ビット のターゲットプラットフォームに配布します。)
z difxapi.dll (wdreg.exe ユーティリティに必要。WinDriver\util ディレクトリにありま す。)
z デバイス用の INF ファイル (PCI / PCMCIS / USB などの Plug-and-Play デバイスには必要です)。
DriverWizard でこのファイルを生成します。詳細は、セクション 5.2 を参照してください。
z Kernel PlugIn ドライバ (<KD ドライバ名>.sys) (作成した場合)
14.2.2 ターゲット コンピュータにドライバをインストール
注意:ドライバをターゲットコンピュータにインストールするにはターゲットコンピュータの管理者権限が必要 です。
以下の手順に従い、ターゲットコンピュータにドライバをインストールします。
○ システムの再起動を防ぐには、windrvr6.sys サービスへのハンドルを開いていないことを ドライバのインストール前に確認します。この手順で、このサービスを使用しているアプリケー ションがない、および windrvr6.sys と動作するように登録されている PCI / USB デバイス への接続がないことを確認します。つまり、この時点で、PC に接続してる PCI / USB デバイス で、このドライバと動作するようにインストールされた INF ファイル はなく、またはファイルは インストールされているが、デバイスは無効です。たとえば、古い WinDriver のバージョンで 開発したドライバをアップグレードする際に、この処理が必要になります (バージョン 6.0 以降 では、以前のバージョンで使用していたモジュール名が異なります)。
このため、デバイスマネージャから WinDriver と動作するように登録されたすべての PCI / USB ドライバを無効またはアンインストールするか (Win 98 / Me では、[プロパティ] – [アン インストール] または [削除])、もしくは PC からデバイスを切断します。この処理をしない場 合、wdreg を使用している新しいドライバのインストールを試みると、WinDriver で動作する ように登録されているすべてのデバイスをアンインストールするか、あるいはインストールコ マンドを正常に実行するために PC を再起動するようにと言うメッセージが表示されます。
○ Windows 2000 の場合、デバイス用に作成した新しい INF ファイルをインストールする前に、
古いバージョンの WinDriver で開発され、Plug-and-Play 用にインストールされている INF ファイルをすべて、%windir%inf から削除します。これにより、Windows が自動的に古い ファイルを検出し、インストールするのを回避します。INF ディレクトリで、デバイスのベンダー ID とデバイス / プロダクト ID でデバイスの関連ファイルを検索することもできます。
z WinDriver のカーネルモジュールのインストール:
① windrvr6.sys、windrvr6.inf と wd900.cat ファイルを同じディレクトリにコピーします。
注意: wd900.cat には、Windows 2000 / XP / Server 2003 / Vista 用のドライバ認証のデジ タル署名が含まれます。インストール中に他のディレクトリにこのファイルを配置する場合に は、windrvr6.inf ファイルの以下の行を編集して、選択したカタログ ファイルの場所を指 定します:
CatalogFile = wd900.cat
INF ファイルのこの行をコメントアウトまたは削除して、カタログファイルを配布しないことも可 能ですが、この場合、インストールではドライバのデジタル署名を使用しないので、推奨いた しません。
② wdreg / wdreg16 ユーティリティを使用して、ターゲット コンピュータに WinDriver のカーネ ル モジュールをインストールします。
注意: wdreg は、difxapi.dll DLL に依存します。
Windows 2000 / XP / Server 2003 / Vista では、コマンドラインから以下のように入力します。
wdreg -inf <windrvr6.inf のパス> install
Windows 98 / Me では、コマンド ラインから以下のように入力します。
wdreg16 -inf <windrvr6.inf のパス> install
たとえば、windrvr6.inf および windrvr6.inf をターゲット コンピュータの d:\MyDevice\ ディレクトリにある場合、以下のようになります。
wdreg -inf d:\MyDevice\windrvr6.inf install
WinDriver ツールキットの WinDriver\util ディレクトリ以下にがあります。このユーティリ
ティの一般的な説明および使用方法に関しては、第 13 章を参照してください。
注意: wdreg は対話型のユーティリティです。問題があるとメッセージを表示して問題を解決 する方法を示します。場合によってはコンピュータの再起動を指示します。wdreg は対話型 のユーティリティです。
注意: ドライバの配布時に、新しいバージョンの windrvr6.sys を Windows ドライバディレ
クトリ (%windir%\system32\driver) の古いバージョンのファイルで上書きしないように
ご注意ください。インストールプログラムまたは INF ファイルでインストーラが自動的にタイム スタンプを比較して新しいバージョンを古いバージョンで上書きしないように設定することを推 奨いたします。
z 対象のデバイスの INF ファイルのインストール (windrvr6.sys と動作するように登録した Plug and Play デバイス):
① Windows 2000 / XP / Server 2003 / Vista: wdreg ユーティリティを使用して、自動的に INF ファイルをロードします。
Windows 2000 / XP / Server 2003 / Vista で対象の INF ファイルを自動的にインストールし Windows デバイス マネージャを更新するには、以下のように wdreg を起動して、install コマンドを実行します。
wdreg -inf <対象の INF ファイルのパス> install
preinstall コマンドを実行して、PC に接続されていないデバイスの INF ファイルを pre-install することができます。
wdreg -inf <対象の INF ファイルのパス> preinstall
注意: Windows 2000 では、対象のデバイスの INF ファイルを以前にインストールした場合
(WinDriver の以前のバージョンで使用した Plug and Play で動作するようにデバイスを登
録)、作成した新しい INF ファイルをインストールする前に %windir%\inf ディレクトリから デバイスの INF ファイルをすべて削除します。このプロセスで、Windows が自動的に使用し ていないファイルを検出したりインストールしたりするのを防ぎます。INF ディレクトリで、デバ イスのベンダー ID とデバイス / プロダクト ID でデバイスの関連ファイルを検索することもでき ます。
② Windows 98 / Me: 下記のセクション 15.1 を参考に、Windows の [新しいハードウェアの追加
ウィザード] または [デバイス ドライバの更新ウィザード] を使用して、手動で INF ファイルを インストールします。
z Kernel PlugIn ドライバのインストール:
Kernel PlugIn ドライバを作成した場合は、セクション 14.2.3 の手順に従って、ドライバをインストー ルします。
z Wdapi900.dll のインストール:
(サンプルおよび DriverWizard で生成された WinDriver のプロジェクトのように) ハードウェア コン トロールアプリケーション / DLL が wdapi900.dll を使用する場合、この DLL をターゲット
の %windir%\system32 ディレクトリにコピーします。
32 ビットアプリケーション / DLL を 64 ビットのターゲットプラットフォームに配布する場合は、
wdapi900_32.dll から wdapi900.dll に名前を変更し、ターゲットの %windir%\
sysWOW64 ディレクトリにコピーします。