WDKドライバ開発 - Visual Studio の設定
おことわり
こういう自分用めもは非公開にすべきなのですが
はてな Blog では記事ごとの公開/非公開設定ができないみたいなので、
最初に言っておきます
VC++をドライバ開発環境にするの自分用めもです。
参照元のサイトのほうが画像つきで丁寧なので、そちらを参照してもらったほうがよいです。
環境
- Visual Studio 2010 (高価な専門ツールです)
- Windows Driver Kit Version 7.1.0
- ddkbuild_cmd 2009-11-28@04-38-36
下準備
- WDKは入っている前提
- ddkbuild.cmdをダウンロードする
- 適当な場所(UACでとめられない場所が望ましい)に作業用ディレクトリを作成しとく(スペースとか全角文字とかは含まれないようにしとく)
- DLしたddkbuild.cmdをwdkディレクトリの下に置く(まぁどこでもよいのだが)
- ddkbuild.cmd の @echo off の下にビルドする環境に合わせて、以下のような設定を書いておく
@set W7BASE=C:\WinDDK\7600.16385.1
プロジェクトの作成
新しいプロジェクトを作成からメイクファイル プロジェクトを選択する
そのほかのファイル
ソースファイルを.cファイルとして作成
ビルドするためなら、DriverEntryだけ書いておけば、とりあえず通る
#include <ntddk.h> #include <wdm.h> NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject, PUNICODE_STRING RegistryPath ) { DbgPrint("Hello World\n"); return STATUS_SUCCESS; }
sources
TARGETNAME はプロジェクト名
TARGETTYPE はドライバ作成の場合はDRIVER
TARGETLIBS はドライバ作成で使うライブラリを書いておく
SOURCES はビルドするファイルを書いておく
USE_PDB はないと後(デバッグ時)から泣くことになるので入れておく
TARGETNAME=test TARGETTYPE=DRIVER TARGETLIBS=$(SDK_LIB_PATH)\advapi32.lib \ $(SDK_LIB_PATH)\ntdll.lib \ $(SDK_LIB_PATH)\kernel32.lib \ $(DDK_LIB_PATH)\ntoskrnl.lib \ $(DDK_LIB_PATH)\ndis.lib \ SOURCES=\ driver.c \ USE_PDB=1
makefileとsourcesファイルに.txt拡張子をつけないようにする
インテリセンスを有効にする
プロジェクトのプロパティを開き、NMAKE->インクルードの検索パスに(WDKのパス)\inc\ddkを追加する
ドライバのロード
わざわざローダを書くのが面倒な場合は
Driver Loader(OSR Online に登録が必要)を使いましょう
ただし Windows XP までしか対応していません
Windows XP 用にドライバを作成するには
ロードの確認
Sysinternals Suite の DbgView を使いましょう
メニューの Capture->Capture Kernel を有効にする