• 検索結果がありません。

Kernel PlugIn ドライバのコンパイル

ドキュメント内 WinDriver v11.70 ユーザーズ ガイド (ページ 130-135)

第 9 章 実行に当たっての問題

12.7 Kernel PlugIn ドライバのコンパイル

注意: Kernel PlugIn は後方互換性はありません。従って、WinDriver のバージョンを変更する場合には、新 しいバージョンを使用して、Kernel PlugIn ドライバをリビルドする必要があります。

12.7.1 Windows で Kernel PlugIn ドライバをコンパイル

サンプルの WinDriver\samples\pci_diag\kp_pci Kernel PlugIn ディレクトリと DriverWizard で生 成された Kernel PlugIn の <project_dir>\kermode ディレクトリ (<project_dir> は、生成された ドライバ プロジェクトを保存したディレクトリ) には、以下の Kernel PlugIn プロジェクト ファイルが含まれます (xxx はドライバ名。サンプルの場合は pci、またはウィザードでコードを生成する際に指定した名前):

x86: 32 ビット プロジェクト ファイル

msdev <version>\kp_xxx.vcproj: 32 ビット MS Visual Studio プロジェクト ファイル (<version> は、IDE のバージョンを表します — 例えば “2012”)

win_gcc\makefike: 32 ビット Windows GCC (MinGW / Cygwin) makefike

amd64: 64 ビット プロジェクト ファイル

msdev <version>\kp_xxx.vcproj: 64 ビット MS Visual Studio プロジェクト ファイル (<version> は、IDE バージョンを表します — 例えば “2012”)

win_gcc\makefike: 64 ビット Windows GCC (MinGW / Cygwin) makefike

サンプルの WinDriver\samples\pci_diag ディレクトリと生成された <project_dir> ディレクトリに は、それぞれ Kernel PlugIn ドライバを実行するユーザーモード アプリケーション用のプロジェクト ファイルが 含まれます(xxx はドライバ名。サンプルの場合は pci、またはウィザードでコードを生成する際に指定した 名前):

x86: 32 ビット プロジェクト ファイル

msdev <version>\xxx_diag.vcproj: 32 ビット MS Visual Studio プロジェクト ファイ ル (<version> は、IDE バージョンを表します — 例えば “2012”)

win_gcc\makefike: 32 ビット Windows GCC (MinGW / Cygwin) makefike

amd64: 64 ビット プロジェクト ファイル

msdev <version>\xxx_diag.vcproj: 64 ビット MS Visual Studio プロジェクト ファ イル (<version> は、IDE バージョンを示します — 例えば “2012”)

win_gcc\makefike: 64 ビット Windows GCC (MinGW / Cygwin) makefike

上記の msdev <version> MS Visual Studio ディレクトリには、Kernel PlugIn とユーザーモード アプリ ケーション両方のプロジェクト ファイルを含む xxx_diag.sln ソリューション ファイルも含まれています。

DriverWizard を使用してコードを生成し、DLL (ダイナミックリンク ライブラリ) の生成を選択した場合、生成

した <project_dir> ディレクトリには libproj DLL プロジェクトのディレクトリも含まれます。このディレ ク ト リ に は 、x86 (32-bit) と / ま た は amd64 (64-bit) デ ィ レ ク ト リ が あ り 、 選 択 し た IDE 用 に msdn_<version> デ ィ レ ク ト リ が 含 ま れ 、 各 IDE の デ ィ レ ク ト リ に は 、DLL の ビ ル ド 用 に xxx_libapi.vcproj プロジェクト ファイルがあります。DriverWizard で生成したユーザーモードの診断 プロジェクト (xxx_diag.vcproj) から DLL を使用します。Windows で Kernel PlugIn ドライバと各ユー ザーモード アプリケーションをビルドするには、以下のステップを実行します。

1. WDK (Windows Driver Kit) がインストールされていることを確認します。

2. WDK をインストールした場所を示すように BASEDIR 環境変数を設定します。

3. Kernel PlugIn SYS ド ラ イ バ (サ ン プ ル の kp_pci.sys、 ま た は DriverWizard で 生 成 さ れ た kp_xxx.sys) をビルドします。

 MS Visual Studio を使用する場合 - Microsoft Visual Studio を起動し、下記を実行します。

 ドライバのプロジェクト ディレクトリから、Visual Studio Kernel PlugIn ソリューション ファイル (<project_dir>\msdev <version>\xxx_diag.sln) を 開 き ま す 。

<project_dir> は、ドライバのプロジェクト ディレクトリです (サンプル コードの場合は pci_diag、または DriverWizard で生成されたコードの保存先のディレクトリ)。msdev

<version> は、ターゲットの Visual Studio ディレクトリ (例 msdev_2012) です。xxx はド ライバ名です (サンプルの場合は pci、または DriverWizard でコードを生成する際に指定 した名前)。

注意: DriverWizard で MS Visual Studio 用にコードを生成するように選択した場合、コード ファイルを生成した後、[IDE to Invoke] オプションを使用して、選択した IDE で Wizard が 自動的に生成されたワークスペース ファイルまたはソリューション ファイルを開きます。

MS Visual Studio を使用して Kernel PlugIn プロジェクトをビルドする際には、プロジェクトの ディレクトリへのパスにスペースを含めないでください。

 Kernel PlugIn プロジェクト (kp_pci.vcproj または kp_xxx.vcproj) をアクティブな プロジェクトとして設定します。

 対象のプラットフォーム用のアクティブな構成を選択します。[ビルド] メニューから [構成マ ネージャ] を選択し、使用する構成を選択します。

 Kernel PlugIn SYS ドライバ (サンプルの場合は kp_pci.sys、ウィザードで生成された

コードの場合は kp_xxx.sys) をビルドするには以下のステップを実行します。

注意: 複数の OS 用にドライバをビルドするには、そのドライバサポートする最も下位の OS を選択します。たとえば、Windows XP およびそれ以降をサポートする場合、Win32 winxp free (リリース モード) または Win32 winxp checked (デバッグ モード) のど ちらかを選択します。

 ドライバをビルドします。ショートカット キー (Visual Studio 2008 では F7 キー) を押すか、

[Build] メニューから実行してください。

 Windows GCC を使用する場合 – 選択した Windows GCC 開発環境 (MinGW / Cygwin) から下

記のステップを実行します。

 ターゲットの Windows GCC Kernel PlguIn プロジェクトのディレクトリへ移動します -

<project_dir>\<kernel_dir>\<CPU>\win_gcc、<project_dir> は対象のド ラ イ バ の プ ロ ジ ェ ク ト デ ィ レ ク ト リ (サ ン プ ル コ ー ド の 場 合 は pci_diag、 ま た は DriverWizard で生成されたコードの保存先のディレクトリ)、<kernel_dir> は対象のプロ ジ ェ ク ト の Kernel PkugIn デ ィ レ ク ト リ (サ ン プ ル コー ド の 場 合 は kp_pci、 ま た は DriverWizard で生成されたコードの場合は kermode)、<CPU> は対象の CPU アーキテク チャ (x86 プラットフォームの場合は x86、x64 プラットフォームの場合は amd64) です。

たとえば、サンプルの KP_PCI ドライバの 32-bit バージョンをビルドする場合:

$ cd WinDriver\samples\pci_diag\kp_pci\x86\win_gcc

DriverWizard で生成された Kernel PlugIn ドライバの 64-bit バージョンをビルドする場合:

$ cd <project_dir>\kermode\amd64\win_gcc

<project_dir> は DriverWizard で生成されたプロジェクト ディレクトリへのパスです (た とえば、~\WinDriver\wizard\my_projects\my_kp)。

 Kernel PlugIn の makefile の ddk_make.bat コマンドを編集して、対象のビルド構成を設定し

ます – つまり、ターゲットの OS とビルド モード (release – free、または debug - checked)。

デフォルトでは、WinDriver のサンプルと DriverWizard で生成された makefile には、ター ゲットの OS のパラメータに Windows XP (32-bit の場合 winxp、64-bit の場合 x64)、およ びビルド モードに release (free) を設定します。

4. 注意:

 ddk_make.bat ユーティリティは WinDriver\util ディレクトリ以下にあり、ビルド コマン

ド を 起 動 す る 際 に 、Windows が 自 動 的 に 認 識 し ま す 。 パ ラ メ ー タ な し で ddk_make.bat を起動すると、このユーティリティで利用可能かオプションを表示しま す。

 選択したビルド OS は、WinDriver の CPU アーキテクチャのバージョンと一致させ て く だ さ い 。 た と え ば 、WinDriver 32-bit 版 を 使 用 し て い る 場 合 に は 、64-bit win7_x64 OS フラグを選択できません。

 複数の OS 用にドライバをビルドする場合には、ドライバがサポートする最も下位の

OS バージョンを選択してください。たとえば、Windows XP およびそれ以降をサ

ポートする場合、OSパラメータには、winxp (32-bit の場合) または x64 (64-bit の 場合) を設定してください。

 make コマンドを使用して Kernel PlugIn ドライバをビルドします。

4. Kernel PlugIn ドライバと動作するユーザーモード アプリケーションをビルドします (サンプルの

pci_diag.ese、または DriverWizard で生成された xxx_diag.exe) 。

 MS Visual Studio を使用する場合:

 ユーザーモードのプロジェクトをアクティブなプロジェクトとして設定します (サンプルの場合 は pci_diag.vcproj、 ま た は DriverWizard で 生 成 さ れ た コ ー ド の 場 合 は xxx_diag.vcproj)。

 アプリケーションをビルドします: Buid メニューからプロジェクトをビルドするか、関連する ショートカット キー (たとえば、Visual Studio 2008 の場合 F7) を使用してビルドします。

 Windows GCC を使用する場合 – 選択した Windows GCC 開発環境 (MinGW / Cygwin) から下

記のステップを実行します:

 タ ー ゲ ッ ト の Windows GCC ア プ リ ケ ー シ ョ ン の デ ィ レ ク ト リ へ 移 動 し ま す -

<project_dir>\<CPU>\win_gcc、<project_dir> は対象のドライバのプロジェク ト ディレクトリ (サンプル コードの場合は pci_diag、または DriverWizard で生成された コードの保存先のディレクトリ)、<CPU> は対象の CPU アーキテクチャ (x86 プラットフォーム の場合は x86、および x64 プラットフォームの場合は amd64) です。

たとえば:

サンプルの pci_diag アプリケーションの 32-bit バージョンをビルドする場合:

$ cd WinDriver\samples\pci_diag\x86\win_gcc

DriverWizard で生成されたユーザーモードのアプリケーションの 64-bit バージョンをビルド する場合:

$ cd <project_dir>\amd64\win_gcc

<project_dir> は DriverWizard で生成されたプロジェクト ディレクトリへのパスです (た とえば、~\WinDriver\wizard\my_projects\my_kp)。

 make コマンドを使用してアプリケーションをビルドします。

12.7.2 Linux でKernel PlugIn ドライバをコンパイル

Linux で Kernel PlugIn ドライバと関連するユーザーモード アプリケーションをビルドするには、以下のステッ プを実行してください:

1. Shell ターミナルを開きます。

2. Kernel PlugIn ディレクトリに移動します。

たとえば、サンプル KP_PCI ドライバをコンパイルする場合は、次のコマンドを実行します。

$ cd WinDriver/samples/pci_diag/kp_pci

DriverWizard で生成された Kernel PlugIn コード用の Kernel PlugIn ドライバをコンパイルする場合は、

次のコマンドを実行します。

$ cd <project_dir>/kermode/linux

(<project_dir> は DriverWizard で生成されたプロジェクトのディレクトリへのパスです (たとえば、

~/WinDriver/wizard/my_projects/my_kp)。

3. configure スクリプトを使用して、makefile を生成します。

$ ./configure

ヒント: WinDriver のカーネル モジュールの名前を変更した場合、スクリプトを実行する前に、-DWD_DRIVER_NAME_CHANGE フラグでドライバをビルドするので、Kernel PlugIn の configure ス クリプトの以下の行のコメントを外してください (“#” を削除)。

# ADDITIONAL_FLAGS=”-DWD_DRIVER_NAME_CHANGE”

注意:

configure スクリプトは、起動してるカーネルをベースとしたカーネル独自の makefile を作成します。configure スクリプトに --with-kernel-source=<path> フラグを追 加することによって、インストールした他のカーネル ソースをベースとした configure スクリ プトを起動できます。<path> には、カーネル ソースのディレクトリへのフル パスを指定しま す。

 Linux カーネル バージョンが 2.6.26 またはそれ以降の場合、configure スクリプトは、

kbuildを使用してカーネル モジュールをコンパイルする makefile を生成します。以前の バージョンの Linux で、kbuild を強制的に使用するには、configure スクリプトに --enable-kbuild フラグを渡します。

ヒント: configure スクリプトのオプションの一覧を表示するには、以下のように --help オプションを

使用します:

./configure --help

4. make コマンドを使用して Kernel PlugIn モジュールをビルドします。

このコマンドは、作成された kp_xxx_module.o/.ko ドライバを含む、新しい LINUX.<kernel version>.<CPU> ディレクトリを作成します。

5. サンプル ユーザーモード診断アプリケーションの makefile のあるディレクトリに移動します。

KP_PCI サンプル ドライバの場合:

cd ../LINUX

DriverWizard で生成された Kernel PlugIn ドライバの場合:

cd ../../linux

6. make コマンドを使用してサンプル診断プログラムをコンパイルします。

ドキュメント内 WinDriver v11.70 ユーザーズ ガイド (ページ 130-135)