2007-02-11 ごそごそ調べ物
■[windows][tips] Visual Studio 2005上で、DDKを使い(デバイスドライバをビルド)しましょう 
や、デバイスドライバのデバッグが出来ないから、IDE上に構築しても意味ないじゃん。って突っ込みは十分判りますよ。
ソースの管理は一目でわかるし、コードは色付き表示だし、慣れた環境じゃないですか?
それに、実際試したら、意外と簡単だったんですよ?設定するの。
発端
なんでVisual Studio 2005上で構築してみようかな?と思ったかと言うと、以下の文面を見たからです。
Visual Studio をエディタおよび統合開発環境として使用する以外に、Visual Studio から Hollis Technology Solutions 製の Ddkbuild などのバッチ コマンド ファイルを使用してビルド ユーティリティを呼び出すことができます。
http://www.microsoft.com/japan/whdc/devtools/tools/buildenv.mspx
これを見て、「え?Visual Studio上でビルドできるの?」って思った訳です。
で、他の人は、どうやってんのかな?と思って、早速ぐーぐる。
Ddkbuild の検索結果のうち 日本語のページ 約 10 件中 1 - 8 件目 (0.18 秒)
少なっ!
…まぁ、普通のバイナリャー(バイナリアンな人々)は、んな軟弱な事はしませんわな。
しょうがないので、ddkbuildなるものをゲット。
MSのリンク紹介には、2件あります。
- DdkBuild
http://www.hollistech.com/Resources/ddkbuild/ddkbuild.htm - Downloads:DDKBUILD -- Visual Studio .CMD Procedure For Building Drivers
http://www.osronline.com/article.cfm?article=43
ゲットして開いてみると唖然。中は、ddkbuild.bat 一本だけ。
何を、どうすれば良いか?
バッチファイルとサイト上の説明を機械翻訳に掛けながら 眺めてみると、要するに、以下のようにして使えば良いようです。
- Visual Studioのビルドイベントに、ddkbuild.bat とオプション引数を少々渡してやれば良い。
- オプション引数には、使用するDDKとターゲットの種類を掛け合わせたものと、リリース/デバッグの指定等を行えば良い。
- インストールしたDDKの場所を、DDKの種類に合わせて環境引数をセットし呼び出せば、後は適当にビルドしてくれる。
検証した環境
以降、実際に試したやり方を、簡単に述べます。
テストした環境は以下の通り。
- Visual Studio 2005 SP1
- Windows Server 2003 Service Pack 1 DDK
- http://www.hollistech.com/Resources/ddkbuild/ddkbuild.htm の ddkbuild.bat
- ターゲットは、VirtualPC上のWindows
VS2005でビルドまで
プロジェクトの作成から開始します。
プロジェクトは、Visual C++ → 全般 → メイクファイル プロジェクト です。
ここでは、設定タブが幾つか ありますので、以下のように設定します。
設定で注意すべきなのは、以下の項目です。
ビルドコマンドライン | ddkbuild -WNET checked . |
リビルドコマンドライン | ddkbuild -WNET checked . -cZ |
ここでは、ddkbuild.batの第1引数に"-WNET"を与えていますが、使うDDKとターゲットの組み合わせ如何によって変える必要があります。
第2引数では、デバッグするので"checked"を与えていますが、リリースだと"free"のようですね。
とりあえず、プロジェクトを作成した直後です。
それでは、早速ソースを引っ張ってきて、ビルドしましょう。
今回は、DDKのgeneralサンプルを使います。以下のフォルダのファイルを丸ごと…
↓プロジェクトフォルダにコピーします。
あ、注意点として、ビルド時、C:\WINDDK\3790.1830\src\general\portio\gpioctl.h がビルドに必要ですので、忘れずにコピーして下さい。
(私はビルドに失敗して、ようやく気付いた)
次に、ソリューションエクスプローラから右クリックで、追加 → 既存の項目 を選び…。
↓入れます。
次に、ddkbuild.batを持ってきます。
次に、ddkbuild.batを開き、先頭行に 環境変数 WNETBASE に、DDKのルート位置を教えてあげます。
set WNETBASE=C:\WINDDK\3790.1830 @echo off ...
ほら、すっごく簡単でしょ?
それでは、動かしてみましょう
動かすには、コンソールアプリケーションもビルドしなければならないので、同じプロジェクト内に突っ込んで、えいやっとビルド。
- genport.sys
- gpdread.exe
- genport.inf
後は、付属するドキュメント通りにドライバを組み込み、gpdread.exe を実行。
おぉ、ちゃんと動いていますよ。
(ドライバの組み込みに失敗していたら、"Unable to open the device."と出ます)
まとめ
恒例のまとめ〜。
- 4 http://reader.livedoor.com/reader/
- 2 http://python.ring.hatena.ne.jp/
- 2 http://python.ring.hatena.ne.jp/t/python?page=7
- 1 http://72.14.235.104/search?q=cache:8SGpz4IIE10J:d.hatena.ne.jp/Wacky/20061021/1161426964+Visual+Studio+Python&hl=ja&ct=clnk&cd=3&gl=jp&lr=lang_ja
- 1 http://a.hatena.ne.jp/lightpink/simple
- 1 http://b.hatena.ne.jp/t/turbogears
- 1 http://d.hatena.ne.jp/keyword/組み込み
- 1 http://d.hatena.ne.jp/keyword/C++
- 1 http://d.hatena.ne.jp/keyword/Windows Server 2003
- 1 http://d.hatena.ne.jp/kirisakineko/20060923
インテリセンスも使えますし便利ですね。
おかげさまでVS2005へ移行して
ようやくVS6.0から離れられそうです。
(相変わらずのDDKの仕様ですが、
ソースを置く場所(パス)のディレクトリ名中に
空白が入るとだめなようですね。
ちょっとだけハマってしまいました。)
お役に立てたようで嬉しいです。
ちなみに、VS2008でも同じ技が使えます。