ふにゃるん

2007-02-11 ごそごそ調べ物

[][] Visual Studio 2005上で、DDKを使い(デバイスドライバビルド)しましょう 01:56  Visual Studio 2005上で、DDKを使い(デバイスドライバをビルド)しましょう - ふにゃるん を含むブックマーク

や、デバイスドライバデバッグが出来ないから、IDE上に構築しても意味ないじゃん。って突っ込みは十分判りますよ。


でもですね、デバッグだけが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.bat 一本だけ。


何を、どうすれば良いか?

バッチファイルとサイト上の説明を機械翻訳に掛けながら 眺めてみると、要するに、以下のようにして使えば良いようです。


検証した環境

以降、実際に試したやり方を、簡単に述べます。

テストした環境は以下の通り。


VS2005でビルドまで

プロジェクトの作成から開始します。

プロジェクトは、Visual C++ → 全般 → メイクファイル プロジェクト です。

DDK1
DDK1 (C)wacky


ここでは、設定タブが幾つか ありますので、以下のように設定します。

DDK3
DDK3 (C)wacky

DDK4
DDK4 (C)wacky


設定で注意すべきなのは、以下の項目です。

ビルドコマンドラインddkbuild -WNET checked .
ビルドコマンドラインddkbuild -WNET checked . -cZ

ここでは、ddkbuild.batの第1引数に"-WNET"を与えていますが、使うDDKとターゲットの組み合わせ如何によって変える必要があります。

第2引数では、デバッグするので"checked"を与えていますが、リリースだと"free"のようですね。


とりあえず、プロジェクトを作成した直後です。

DDK5
DDK5 (C)wacky


それでは、早速ソースを引っ張ってきて、ビルドしましょう。

今回は、DDKのgeneralサンプルを使います。以下のフォルダのファイルを丸ごと…

DDK6
DDK6 (C)wacky

 ↓プロジェクトフォルダにコピーします。

DDK7
DDK7 (C)wacky

あ、注意点として、ビルド時、C:\WINDDK\3790.1830\src\general\portio\gpioctl.h がビルドに必要ですので、忘れずにコピーして下さい。

(私はビルドに失敗して、ようやく気付いた)


次に、ソリューションエクスプローラから右クリックで、追加 → 既存の項目 を選び…。

DDK8
DDK8 (C)wacky

 ↓入れます。

DDK10
DDK10 (C)wacky


次に、ddkbuild.batを持ってきます。

DDK11
DDK11 (C)wacky


次に、ddkbuild.batを開き、先頭行に 環境変数 WNETBASE に、DDKのルート位置を教えてあげます。

set WNETBASE=C:\WINDDK\3790.1830

@echo off
...

閉じて、ビルドすると、以下のようにビルドできるハズです。

DDK12
DDK12 (C)wacky

ほら、すっごく簡単でしょ?


それでは、動かしてみましょう

動かすには、コンソールアプリケーションビルドしなければならないので、同じプロジェクト内に突っ込んで、えいやっとビルド

DDK13
DDK13 (C)wacky


次は、ビルドした以下のバイナリをターゲットにコピーします。

  • genport.sys
  • gpdread.exe
  • genport.inf

後は、付属するドキュメント通りにドライバを組み込み、gpdread.exe を実行。

DDK24
DDK24 (C)wacky

おぉ、ちゃんと動いていますよ。

(ドライバの組み込みに失敗していたら、"Unable to open the device."と出ます)


まとめ

恒例のまとめ〜。

HISIHISI 2008/04/12 15:19 はじめまして。どうも有難う御座います!

インテリセンスも使えますし便利ですね。
おかげさまでVS2005へ移行して
ようやくVS6.0から離れられそうです。

(相変わらずのDDKの仕様ですが、
ソースを置く場所(パス)のディレクトリ名中に
空白が入るとだめなようですね。
ちょっとだけハマってしまいました。)

WackyWacky 2008/04/27 14:48 こんにちは。
お役に立てたようで嬉しいです。
ちなみに、VS2008でも同じ技が使えます。

トラックバック - http://d.hatena.ne.jp/Wacky/20070211/1171213017