WinDriver は、以下の 64-bit アーキテクチャのドライバ開発をサポートしています:
- Windows Intel EM64T または AMD64 (x64)
- Linux Intel EM64T または AMD64 (x86_64)
デフォルトでは、WinDriver 64-bit バージョンを使用して作成したアプリケーションは、64-bit アプリケーションです。64-bit アプリケーションは、32-bit アプリケーションよりも効率的に動作します。ただし、WinDriver 64-bit バージョンを使用して、対応する 64-bit プラットフォームで動作する 32-bit アプリケーションを作成することもできます。
このドキュメントでは、32-bit アプリケーションを作成するために、以下の二つの方法を紹介します:
NOTE
以下のドキュメントでは、
- <WD64> は、対象の OS に対して 64-bit WinDriver をインストールしたディレクトリのパスを表します (例、C:\WinDriver64)。<WD32> は、同じ OS で 32-bit WinDriver をインストールしたディレクトリのパスを表します (例、C:\WinDriver)。
- <ver> は、インストールする WinDriver のバージョンを表します — 例、バージョン 11.00 の場合、1100。
64-bit プラットフォーム用に 32-bit WinDriver アプリケーションを開発
64-bit プラットフォーム用に 32-bit WinDriver アプリケーションを作成するには、64-bit WinDriver を使用して、以下を実行します:
- WinDriver のユーザー マニュアルに従って (例、DriverWizard を使用してコードを生成するか、WinDriver のサンプルを使用して)、WinDriver のアプリケーションを作成します。
- 以下の設定を使用して、ターゲットの OS 用に最適な 32-bit コンパイラーでアプリケーションをビルドします:
KERNEL_64BIT プロセッサの定義を追加します。
NOTE
makefiles に、-D flag: -DKERNEL_64BIT を使用して定義を追加します。
64-bit WinDriver に含まれるサンプルおよび DriverWizard で生成された Linux と Windows GCC makefiles、Windows MS Visual Studio のプロジェクトには、既にこの定義が追加されています。
- 64-bit プラットフォーム — Windows では <WD64>\lib\amd64\x86\wdapi<ver>.lib (例、C:\WinDriver64\lib\amd64\x86\wdapi1100.lib)、Linux では <WD64>/lib/libwdapi<ver>_32.so (例、/c/WinDriver64/lib/libwdapi1100_32.so) で実行する 32-bit アプリケーション用に WinDriver API library/shared object でアプリケーションをリンクします。
64-bit WinDriver に含まれる 32-bit アプリケーション用のサンプルおよび DriverWizard で生成されたプロジェクトと makefile には、正しいライブラリへリンクされています:
Windows では、MS Visual Studio プロジェクト ファイルと Windows GCC makefiles は、<WD64>\lib\amd64\x86\wdapi1100.lib とリンクされています。
Linux では、開発マシンに 64-bit WinDriver のインストールで /usr/lib ディレクトリに libwdapi<ver>.so のシンボリック リンク (<WD64>/lib/libwdapi<ver>_32.so へのリンク)、/usr/lib64 ディレクトリに <WD64>/lib/libwdapi<ver>_32.so (shared object の 64-bit バージョン) を作成します。
WinDriver のサンプルおよび DriverWizard で生成された makefiles は、これらのシンボリック リンクによって最適な shared object でリンクします (32-bit または 64-bit コンパイラーを使用してコンパイルしたコードに依存します)。
NOTE
- ターゲットの 64-bit プラットフォームへ対象のアプリケーションを配布する場合、64-bit プラットフォームで実行する 32-bit アプリケーション用に WinDriver API DLL/shared object を一緒に提供する必要があります — Windows では、
<WD64>\redist\wdapi<ver>_32.dll (例、
C:\WinDriver64\redist\wdapi1100_32.dll)
/
Linux では、<WD64>/lib/libwdapi<ver>_32.so
(例、
/c/WinDriver64/lib/libwdapi1100_32.so)。
このファイルを配布する前に、_32 の部分を削除して、対象の配布パッケージのファイルのコピーの名前を変更します。ターゲットでのインストールでは、関連する OS へ名前を変更した DLL/shared object をコピーする必要があります — Windows では、%windir%\sysWOW64
または Linux では、/usr/lib on Linux。
その他のすべての配布ファイルは、WinDriver のユーザー マニュアルの説明のとおり、他の 64-bit WinDriver のドライバの配布方法と同じです。
- この方法を使用して作成したアプリケーションは、32-bit プラットフォームでは動作しません。32-bit プラットフォーム用の WinDriver アプリケーションは、
KERNEL_64BIT の定義なしでコンパイルする必要があります; 32-bit WinDriver の WinDriver API library/shared object の標準 32-bit バージョンでリンクする必要があります (Windows では、<WD32>\lib\x86\wdapi<ver>.lib / Linux では、<WD32>/lib/libwdapi<ver>.so); かつ標準 32-bit WinDriver API DLL/shared object と一緒に配布する必要があります (Windows では、<WD32>\redist\wdapi<ver>.dll / Linux では、<WD32>/lib/libwdapi<ver>.so)。その他の必要な 32-bit の配布ファイルに関しては、WinDriver のユーザー マニュアルを参照してください。
32-bit および 64-bit の両方のプラットフォーム用に 32-bit アプリケーションを開発
64-bit と 32-bit の両方の WinDriver をお持ちの場合、32-bit および 64-bit の両方のプラットフォームで実行できるシングル 32-bit アプリケーションを作成することもできます。以下の方法で実現できます:
- WinDriver API への呼び出しをまとめて処理する DLL (Windows の場合) または shared object (Linux の場合) を作成します。
DriverWizard で生成したコードまたは WinDriver のサンプルの一つを使用して既に WinDriver のアプリケーションを作成している場合、そのアプリケーションを DLL/shared obejct に変換します。
- 対象の DLL/shared object の二つのバージョンをコンパイルします:
- 32-bit プラットフォーム用のバージョン: このバージョンは、
32-bit WinDriver の標準 32-bit WinDriver API library/shared object を使用して、
KERNEL_64BIT の定義なしで、32-bit コンパイラを使用してコンパイルする必要があります —
Windows では、<WD32>\lib\x86\wdapi<ver>.lib
(例、
C:\WinDriver\lib\x86\wdapi1100.lib)
/ Linux では、<WD32>/lib/libwdapi<ver>.so
(例、
/c/WinDriver/lib/libwdapi1100.so)。
- 64-bit プラットフォームのバージョン: このバージョンは、
64-bit WinDriver の標準 64-bit WinDriver API library/shared object を使用して、64-bit コンパイラーでコンパイルする必要があります。—
Windows では、<WD64>\lib\amd64\wdapi<ver>.lib
(例、
C:\WinDriver64\lib\x86\wdapi1100.lib)
/ Linux では、<WD64>/lib/libwdapi<ver>.so
(例、
/c/WinDriver64/lib/libwdapi1100.so)。
- 作成した DLL/shared object を使用して WinDriver と通信を行う 32-bit アプリケーションを記述します; DLL/shared object の関連するバージョンをロードするようにアプリケーションを実装する必要があります — 32-bit か 64-bit — 起動するプラットフォームに依存します。
Note: KERNEL_64BIT の定義なしで、最適な 32-bit コンパイラーを使用してアプリケーションをコンパイルする必要があります。
NOTE
この方法を使用して開発したドライバを配布する際には、各ターゲットのプラットフォーム用の関連するファイルを配布してください:
- 32-bit プラットフォームの場合、作成した WinDriver-wrapper DLL/shared object の 32-bit バージョン、および 32-bit WinDriver DLL/shared object を含む 32-bit WinDriver の標準 32-bit ファイルと一緒にアプリケーションを配布してください (Windows では、<WD32>\redist\wdapi<ver>.dll / Linux では、<WD32>/lib/libwdapi<ver>.so)。
- 64-bit プラットフォームの場合、作成した WinDriver-wrapper DLL/shared object の 64-bit バージョン、および 64-bit WinDriver DLL/shared object を含む 64-bit WinDriver の標準 64-bit ファイルと一緒にアプリケーションを配布してください (Windows では、<WD64>\redist\wdapi<ver>.dll / Linux では、<WD64>/lib/libwdapi<ver>.so)。
配布手順の詳細は、WinDriver のユーザー マニュアルを参照してください。
|