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



Doc ID: 116

WinDriver PCI/ISA API のバージョンアップによる変更

WinDriver では、一般的に WinDriver の API の後方互換を維持するようにデザインしており、以前のバージョンで開発したコードは、新しいバージョンのヘッダー ファイルと新しいバージョンのライセンス コードを使用して、コードをリビルドするだけで新しいバージョンへ移行することができます。多くの場合、コードの変更なしで (ライセンス コードのアップデートを除く)、新しいバージョンのヘッダーとドライバだけで、古いコードは動作するはずです。ただし、新しい OS やハードウェアに実装される機能に対応するために、既存の API を変更せざるおえない場合があります。本ドキュメントでは、異なる WinDriver のバージョン間で変更した WinDriver の API を紹介し、古いコードを新しい API を使うように移植する方法を説明します。

注意
  • 一般的に、本ドキュメントで "PCI" と記載している場合、PCI と PCI-Express、PCMCIA および ISA が含まれます。
  • 本ドキュメントは、WinDriver PCI 版の API に関する記載となります。WinDriver USB 版の API のアップグレードに関しては、テクニカル ドキュメント #117 を参照してください。
  • 本ドキュメントは、以前のバージョンの API から僅かな変更でコードをアップデートする方法のみを紹介しています。
    さらにコードのアップデートが必要な場合には、最新バージョンの WinDriver で追加/強化した API を使用することを強く推奨します。 最新バージョンの WinDriver で追加/強化した API に関しては、WinDriver のリリース ノートWinDriver PCI ユーザー マニュアルを参照してください。
    最新バージョンの WinDriver へのフル アップグレード方法に関しては、テクニカル ドキュメント #84 を参照してください。

以下、WinDriver の API の変更に関する情報を参照してください:

WinDriver v11.80 PCI 版の API の変更

v11.80 では、WinDriver WDC PCI API と低レベル WinDriver PCI API に対して以下の変更を行いました; これらの変更の主な目的は、64-bit PCI アドレスのサポートの改良となります:

  • include/wdc_defs.h WDC type の変更 —
    • WDC_ADDR_DESC struct —
      • kptAddr フィールドの名前を pAddr へ変更しました。
      • dwBytes フィールドの名前を qwBytes へ変更し、 その type を DWORD から UINT64 へ変更しました。
      • dwUserDirectMemAddress フィールドの名前を pUserDirectMemAddr へ変更しました。

  • include/windrvr.h 低レベル WinDriver type の変更 —
    • WD_TRANSFER 構造体の変更 —
      注意
      WD API はこの type と同様に WD_INTERRUPT 構造体 type (type WD_TRANSFER*Cmd フィールドを持つ) を参照します。

      • dwPort フィールドの名前を pPort へ変更しました。

    • WD_ITEMS 構造体の変更 —
      注意
      WDC API は WD_CARD 構造体 (WD_ITEMS 構造体の配列である Item フィールドを持つ) と WD_CARD_REGISTER 構造体 (type WD_CARD の Card フィールドを持つ) を参照します。

      • dwOptions フィールドを I.Mem.dwOptions フィールドに置き換えました。

      • I.Mem union 構造体フィールドの変更 —
        • dwPhysicalAddr フィールとの名前を pPhysicalAddr へ変更し、 その type を DWORD から PHYS_ADDR へ変更しました。
        • dwBytes フィールドの名前を qwBytes へ変更し、 その type を DWORD から UINT64 へ変更しました。
        • dwTransAddr フィールドの名前を pTransAddr へ変更しました。
        • dwUserDirectAddress フィールドの名前を pUserDirectAddr へ変更しました。
        • 予約済みの dwCpuPhysicalAddr フィールドを削除しました。
        • 新たに pReserved フィールドを追加しました。

      • I.Mem64 union 構造体フィールドを削除しました。

      • I.IO union 構造体フィールドを以下のように変更 —
        • dwAddr フィールドの名前を pAddr へ変更しました。

      • I.Int union 構造体フィールドを以下のように変更 —
        • 新たに dwReserved1pReserved2 フィールドを追加しました。

      • I.Val union 構造体フィールドを削除しました。

    • WD_ITEM_OPTIONS enum — type の名前をWD_ITEM_MEM_OPTIONS へ変更し、 その WD_ITEM_XXX enum の値の名前を WD_ITEM_MEM_XXX へ変更しました。
      注意
      WD_ITEMS 構造体の I.Mem.dwOptions フィールド (以前dwOptions フィールド) は、この enum type の値を取得します。

    • ITEM_TYPE enum の ITEM_MEMORY_64BIT enum の値を削除しました。