テクニカル ドキュメント #84



Doc ID: 84
製品: WinDriver
Version:  6.2x - 7.x

WinDriver v6.0x から v6.2x - v7.x へのアップグレード方法

v6.0x から 6.20 またはそれ以降へドライバをアップグレードする方法は、このドキュメントの内容のとおり、僅かな作業で完了します。
v7.x から v8.x へのアップグレード方法に関しては、テクニカル ドキュメント #131 を参照してください。v6.2x から v7.x へのアップグレード方法に関しては、テクニカル ドキュメント #127 を参照してください。v5.22 およびそれ以前から v6.0x およびそれ以降へのアップグレード方法に関しては、テクニカル ドキュメント #116を参照してください。

注意: WinDriver は後方互換性があるので、v6.2x で開発したコードは、編集せずに (新しいバージョンのファイルとライセンスでコードを再ビルドせずに)、v7.x のドライバ モジュール (windrvr6.sys/o/ko/dll) と動作します。ただし、新しいドライバ モジュールの機能をフルに活用し、新しいバージョンで提供される不具合の修正と強化点を十分に反映させるには、このドキュメントに沿って、ドライバ プロジェクトをアップグレードし、新しいドライバを使用し、新しいドライバを配布することを推奨いたします。

アップグレード ステップ:

新しい WinDriver のライセンスを取得:
  • メジャー アップグレードの場合 (たとえば、v6.2x から v7.0x へのアップグレードの場合)、v6.2x のライセンス コードは、v7.0x では使用できません。登録版ユーザーで、有効なサポート プランをお持ちのユーザーは、無償でアップグレードが可能です。新しいバージョンのライセンス コードを取得の際には、お問合せフォームから、お問合せください。その際に、ライセンス コードを一緒にご連絡ください。

Back to Top

ドライバ プロジェクトの再ビルド:
  • バージョン 7.00 から v7.01+ へアップグレードする場合: v7.01 から WinDriver の project/make ファイルの include パスに、WinDriver/ および WinDriver/include/ ディレクトリへのパスが含まれます。ファイルへのフルパス / 相対パスではなく (v7.00 で行っていた)、include へのヘッダ ファイルの名前のみを指すように、WinDriver のソースファイルおよび DriverWizard で生成されたコードの #include 構文を変更しました。

    これらの変更で、v7.01 またはそれ以降のソース ファイルを使用して、v7.00 またはそれ以前のドライバ プロジェクトを再ビルドする場合には、プロジェクトのビルドを成功するためには、プロジェクト / make ファイルを変更し、プロジェクトの include パスに WinDriver/ および WinDriver/include ディレクトリへのパスを追加する必要があります。

  • Windows の場合、v6.20 以降、MSDEV (Visual C++) のプロジェクトで、WinDriver\lib\wd_utils.lib ライブラリへ Link を行うことによって、wd_utils.dll (Delphi と Visual Basic のプロジェクトで使用) を使用することが出来るようになりました。WinDriver v7.00 から、Borland C++ Builder プロジェクトで同じオプションを使用できるようになりました。そのプロジェクトで WinDriver\lib\wd_utils_borland.lib ライブラリの Link を行う必要があります。点が異なります。

    Linux の場合、v7.00 以降のプロジェクトで、WinDriver/lib/libwd_utils.so へ Link することによって、wd_utils を使用できます。Linux のプロジェクトで、この共有オブジェクトへ Link を行うためには、makefile の WinDriver/src ディレクトリ (SECS フラグ以下) のすべてのソース ファイルをリストせずに、makefile のリンク フラグ (LFLAGS += -1 wd_utils) へ wd_utils を追加します。

    WinDriver の v7.01 以降、Windows CE のプロジェクトでも、WinDriver\lib\wd_utils.lib への Link を行うことによって、wd_utils を使用できます。また、Solaris のプロジェクトでも、WinDriver/lib/libwd_utils.so への Link が可能です。

    プロジェクトへ wd_utils DLL / 共有オブジェクトへのリンク方法に関しては、WinDriver のサンプル プロジェクトおよび、v6.20 以降 (Windows - MSDEV) / v7.00 (Windows - Borland C++ Builder; Linux) / v7.01 以降 (Solaris; Windows CE) の DriverWizard で生成したプロジェクトをご参考ください。

    ドライバ プロジェクトで wd_utils DLL / 共有オブジェクトを使用した場合には、ドライバと一緒に wd_utils.dll / libwd_utils.so を配布しする必要があります。WinDriver のユーザー マニュアルの「ドライバの配布」の章を参照してください。

  • USB の場合、WinDriver v7.00 以降、WinDriver/samples/shared/usb_diag_lib.c で実装される関数を呼ぶコンソール ドライバ アプリケーション/DLL を作成した場合 (WinDriver USB 診断ドライバ プロジェクトのサンプルおよび生成されたプロジェクトをそのまま使用する場合: 新しいバージョンの usb_diag_lib.c ファイルでプロジェクトをビルドするには、プロジェクトへ新しい WinDriver/samples/shared/diag_lib.c を追加する必要があります。

  • PCI/ISA ドライバの場合、WinDriver v7.00 以降、新しい WDC library が追加されました。この WDC library は、標準的な WinDriver PCI/ISA API への便利なラッパー API を提供します。(このライブラリは wd_utils.dll の一部です; WinDriver/src ディレクトリ以下にソース ファイルがあります)

    新しい WDC APIs (現在、C のみを提供) に関する詳細は、WinDriver v7.x のユーザー マニュアルを参照してください。v7.x の DriverWizard で生成されたプロジェクトは、低レベルな標準的な WinDriver API の代りに、WDC API を使用します。v7.x の pci_diagpcmcia_diagpci_dump および plx サンプルでも、この新しい API を使用しています。

    WDC が主に、標準的な WinDriver API (まだサポートされています) へのラッパーを提供するので、新しい WDC ライブラリを使用するのに古いコードを修正する必要はありません。新しい API を使用するようにコードをアップグレードする場合には、新しいサンプルおよび生成されたコードを検証し、古いコードと、新しいコードを比較し、新しい WDC API の使い方を理解するのが最良な方法です。

    注意: WDC APIs を使用するには、プロジェクト/makefile に関連する WinDriver/src/wdc_xxx.c ソース ファイルを含めるか、または、MSDEV (Visual C++) プロジェクトの場合には、プロジェクトに WinDriver\lib\wd_utils.lib ライブラリへリンクを追加するか、Borland C++ Builder プロジェクトの場合には、WinDriver\lib\wd_utils_borland.lib ライブラリへリンクを追加する必要があるので、注意してください (DriverWizard で生成されたプロジェクトおよびサンプル プロジェクトには含まれます)。

  • 割り込み処理の API を含む PCI/ISA プロジェクトの場合、新しい WDC API を使用するコードにアップグレードしたくない場合、以下のように DLLCALLCONV を追加してください。以下のコードは、サンプル/Wizard で生成された C の WinDriver のコードをベースとしてます。xxx は、ドライバのプロジェクト名です。Visual Basic および Delphi のプロジェクト、または C/C++ 割り込み関数でも同様の変更をします。以下の場所に DLLCALLCONV を追加します:
    • xxx_lib.h:
      typedef void (DLLCALLCONV *XXX_INT_HANDLER)
          (XXX_HANDLE hXXX, XXX_INT_RESULT *intResult);
    • xxx_lib.c:
      void DLLCALLCONV XXX_IntHandler(PVOID pData)
    • xxx_diag.c:
      void DLLCALLCONV XXX_IntHandlerRoutine
          (XXX_HANDLE hXXX,
          XXX_INT_RESULT *intResult)

  • Visual Basic (VB) プロジェクトの場合、WinDriver v6.22 から、WinDriver\vb\include\ ディレクトリの windrvr.cls wd_utils.cls ファイル名がそれぞれ windrvr.bas wd_utils.bas に変りました。そのため、v6.21 またはそれ以前のバージョンで開発した VB プロジェクトを新しいファイルを使用するように変更する必要があります。

  • 登録版ユーザー は、新しいバージョンの WinDriver のライセンス コードを取得し、コードにライセンスを登録する必要があります。
    PCI/ISA ドライバの場合、WD_License() API または、新しい WDC WDC_DriverOpen() API を使用してライセンスを登録します。USB ドライバの場合、WDU_Init() API を使用してライセンスを登録します。WinDriver のユーザー マニュアルを参照してください。

  • 新しいバージョンのソースファイルでドライバ プロジェクトをリビルドします。

Back to Top

デバイスの INF ファイルのアップグレード (Windows):
  • Windows 98/Me/2000/XP/Server 2003 では、プラグ アンド プレイ デバイス (USB/PCI) のドライバを作成した場合、対象のデバイスを新しいバージョンの windrvr6.sys と動作するように登録するために、対象のデバイスの新しい INF ファイルを作成し、インストールすることを推奨します。新しいバージョンの DriverWizard を使用して、新しい INF ファイルを作成することができます。または、既存の INF ファイルのドライバ バージョンを編集することもできます。


Back to Top

配布ドライバのアップグレード:
  • 配布ドライバのアップグレード: 新しいバージョンのドライバ モジュール (windrvr6.sys/o/ko/dll) ファイルと関連ファイルをインストール プログラムで配布し、新しいドライバをインストールします。

    Windows 98/Me/2000/XP/Server 2003 の場合、たとえば、新しい windrvr6.sys windrvr6.inf ファイル、wdreg.exe/wdreg_gui.exe/wdreg16.exe ユーティリティ、対象のデバイスの INF ファイル (作成した場合)、wd_utils.dll (ドライバ プロジェクトで使用した場合) と Kernel PlugIn ドライバ (作成した場合) を配布します。

    ドライバの配布方法の詳細は、WinDriver のユーザー マニュアルか、テクニカドキュメント #117 を参照してください。