第 8 章 特定のチップ セットの拡張サポート
12.7 Kernel PlugIn ドライバのコンパイル
12.7.1 Windows でのコンパイル
サンプルの WinDriver\samples\pci_diag\kp_pci\ Kernel PlugIn ディレクトリと DriverWizard で 生成されたKernel PlugIn の <project_dir>\kermode\ ディレクトリ (<project_dir> は、生成され たドライバ プロジェクトを保存したディレクトリ) には、以下の Kernel PlugIn プロジェクト ファイルが含まれます (xxx はドライバ名。サンプルの場合は pci、またはウィザードでコードを生成する際に指定した名前。):
z \x86: 32 ビットプロジェクトファイル
○ msdev_2008\kp_xxx.vcproj: 32 ビット MSDEV 2008 プロジェクト
○ msdev_2005\kp_xxx.vcproj: 32 ビット MSDEV 2005 プロジェクト
○ msdev_2003\kp_xxx.vcproj: 32 ビット MSDEV 2003 プロジェクト
○ msdev_6\kp_xxx.dsp: 32 ビット MSDEV 6.0 プロジェクト z \amd64: 64 ビット プロジェクト ファイル
○ msdev_2008\kp_xxx.vcproj: 64 ビット MSDEV 2008 プロジェクト
○ msdev_2005\kp_xxx.vcproj: 64 ビット MSDEV 2005 プロジェクト
サンプルの WinDriver\samples\pci_diag\ディレクトリと生成された\<project_dir> ディレクトリ には、それぞれ Kernel PlugIn ドライバを実行するユーザーモードアプリケーション用のプロジェクトファイル が含まれます(xxx はドライバ名。サンプルの場合は pci、またはウィザードでコードを生成する際に指定し た名前。):
z \x86: 32 ビットプロジェクトファイル
○ msdev_2008\xxx_diag.vcproj: 32 ビット MSDEV 2008 プロジェクト
○ msdev_2005\xxx_diag.vcproj: 32 ビット MSDEV 2005 プロジェクト
○ msdev_2003\xxx_diag.vcproj: 32 ビット MSDEV 2003 プロジェクト
○ msdev_6\xxx_diag.dsp: 32 ビット MSDEV 6.0 プロジェクト
○ cbuilder4\xxx.bpr および xxx.cpp: Borland C++ Builder 4.0 プロジェクト ファイルと 関連 CPP ファイル。これらのファイルは、Borland C++ Builder 5.0 および 6.0 でも使用できま す。
○ cbuilder3\xxx.bpr および xxx.cpp: Borland C++ Builder 3.0 プロジェクトファイルと 関連 CPP ファイル
z \amd64: 64 ビット プロジェクト ファイル
○ msdev_2008\xxx_diag.vcproj: 64 ビット MSDEV 2008 プロジェクト
○ msdev_2005\xxx_diag.vcproj: 64 ビット MSDEV 2005 プロジェクト
上記の MSDEV ディレクトリには、Kernel PlugIn とユーザーモードアプリケーション両方のプロジェクトファイ
ルを含む xxx_diag.dsw/sln ワークスペース / ソリューションファイルも含まれています。
Kernel PlugIn ドライバと各ユーザーモード アプリケーションをビルドするには、以下のステップを実行しま す。
1. ご使用の PC に対象の OS 用の WDK (Windows Driver Kit) がインストールされていることを確認します
(セクション 11.6.1 を参照してください)。
2. WDK をインストールした場所を示すように BASEDIR 環境変数を設定します。
3. Microsoft Developer Studio (MSDEV) を開始し、下記のステップを実行します。
① ドライバのプロジェクトディレクトリから、生成されたワークスペース/ソリューションファイル (<project_dir>\<MSDEV_dir>\xxx_diag.dsw/.sln) を開きます。
<project_dir> は、ドライバのプロジェクトディレクトリです (サンプルコードの場合は
\pci_diag、または DriverWizard で生成されたコードの保存先のディレクトリ)。
<MSDEV_dir> は、ターゲット MSDEV ディレクトリ (msdev2008 / msdev2005 / msdev2003 / msdev_6) です。xxx はドライバ名です (サンプルの場合は pci、または
DriverWizard でコードを生成する際に指定した名前)。
DriverWizard で MSDEV IDE 用にコードを生成するように選択した場合、コード ファイルを 生成した後、Wizard が自動的に MSDEV を起動し、生成されたワークスペース ファイルまた はソリューション ファイルを開くので注意してください。ただし、コード生成ダイアログの ''IDE to Invoke'' オプション を''None'' に設定することによって、この動作を回避できます。
② Kernel PlugIn SYS ドライバ (サンプルの場合は kp_pci.sys、ウィザードで生成されたコー
ドの場合は kp_xxx.sys) をビルドするには以下のステップを実行します。
i. Kernel PlugIn プロジェクト (kp_pci.dsp/vcproj または kp_xxx.dsp/vcproj) をアクティブなプロジェクトとして設定します。
ii. 対象のプラットフォーム用のアクティブな構成を選択します。[ビルド] メニューから [構成 マネージャ] (MSDEV 2003 / 2005 / 2008 の場合) または [アクティブな構成の設定 …]
(MSDEV 6.0 の場合) を選択し、使用する構成を選択します。
注意: 複数の OS 用にドライバをビルドするには、そのドライバサポートする最も下位の OS を選択します。たとえば、Windows 2000、XP、およびそれ以降をサポートする場合、
Win32 win2k free (リリースモード) または Win32 win2k checked (デバッグモー ド) のどちらかを選択します。
iii. ドライバをビルドします。ショートカット キー (MSDEV 6.0 では F7 キー) を押すか、[Build]
メニューから実行してください。
③ Kernel PlugIn ドライバを実行するユーザーモードアプリケーションをビルドするには、以下の
ステップを実行します (サンプルの場合は pci_diag.exe、ウィザードで生成されたコード
の場合は xxx_diag.exe):
i. ユーザーモード プロジェクト (サンプルの場合は pci_diag.dsp/vcproj、ウィザー ドで生成されたコードの場合は xxx_diag.dsp/vcproj) をアクティブなプロジェクト として設定します。
ii. アプリケーションをビルドします。ショートカットキー (MSDEV 6.0 では F7 キー) を押す か、[ビルド] メニューから実行します。
12.7.2 Linux でのコンパイル
1. Shell ターミナルを開きます。
2. Kernel PlugIn ディレクトリに移動します。たとえば、サンプル KP_PCI ドライバをコンパイルする場合
は、次のコマンドを実行します。
cd WinDriver/samples/pci_diag/kp_pci
DriverWizard で生成された Kernel PlugIn コード用の Kernel PlugIn ドライバをコンパイルする場合 は、次のコマンドを実行します (<path> は生成された DriverWizard プロジェクトのディレクトリ。
例: /home/user/WinDriver/wizard/my_projects/my_kp/):
cd <path>/kermode/linux/
3. configure スクリプトを使用して、makefile を生成します。
./configure --disable-usb-support
注意: configure スクリプトは、起動してるカーネルをベースとしたカーネル独自の makefile を作成します。configure スクリプトに --with-kernel-source=<path> フラグを追加す ることによって、インストールした他のカーネル ソースをベースとした configure スクリプトを起動で きます。<path> には、カーネル ソースのディレクトリへのフル パスを指定します。
Linux カーネルバージョンが 2.6.26 またはそれ以降の場合、configure は、kbuild を使用し
てカーネルモジュールをコンパイルする makefile を生成します。以前のバージョンの Linux で、
kbuild を強制的に使用するには、configure に --enable-kbuild フラグを渡します。
4. Kernel PlugIn モジュールをビルドします。“make” コマンドを使用します。
このコマンドは、作成された kp_xxx.o/.ko ドライバを含む、新しい LINUX.xxx/ ディレクトリ を作成します (xxx は Linux カーネルにより異なります)。
5. サンプルユーザーモード診断アプリケーションの makefile のあるディレクトリに移動します。
KP_PCI サンプルドライバの場合: cd ../LINUX/
DriverWizard で生成された Kernel PlugIn ドライバの場合: cd ../../linux/
6. サンプル診断プログラムをコンパイルします。 “make” コマンドを使用します。