WDK 7リリース [ドライバ開発]
Windows Driver Kit (WDK) 7.0.0
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
8月6日にリリースされてました。
WDFも1.9にバージョンアップ
Vista/2008Server/Windows7に対応しつつも、XPをまだ捨てて無いので
さくっとインストールすべし。
ddkbuild 7.3 R27
http://www.osronline.com/article.cfm?article=43
システムの環境変数にWLHBASEを作成してインストール後のフォルダを指定すればOK。
詳しくはddkbuild.cmdの頭のほうに書いてある
ドライバのテストの自動化はWLKでできる
WLK 1.4
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
デバイスタイプによっては、ごく基本的な試験しかしないので、あまり役に立たないかもしれないが
この試験が通らないことには安定性とは程遠い。
今回のリリースでは、PREfastの出力が、かなり強化されたのは大きい。
知らない人も多いと思うが、
PREfastはWDKについている静的解析ツールで、ソースコードの怪しい部分をチェックしてくれる。
たとえば
こんな感じでソースコードを書いてあると
pのNULLチェックがしてないよ!
って警告を出してくれる。
ほとんど関係ない場所なら使う前に
とでも書いておけば警告は消える。
でも、一番使えると思ったのは、コールバックなどMSが指定した書式の関数を実装する場合だ。
よくコピペで戻り値を間違えていても警告すら出ないことが多い。
戻り値がVOID型なのにNTSTATUSと書いてしまっていたりとか。
警告どおりに宣言を記述するとそういう間違いを前もって消すことができる。
今は仮想化を使えばOSのリカバリも簡単にできるが
仮想化が使えないドライバの開発も多い。
そういうときに前もってエラーをチェックしておくことで
BSOD率をぐっと下げることができるこういうツールは非常にありがたい。
しかもタダ。
ただ、PREfastはコンパイル時間が異常に長くなるので
普段の実装はPREfast無し。ある程度実装が終ったらPREfastあり。
とするのが良いと思う。ネガティブな愚痴は追記で。
デバッグもマシン2台あれば、WinDbgを使って
リアルタイムで変数を調査できて
アプリケーションのように自在にデバッグできる。
BSODが出ても、変数やメモリを簡単にチェックできるので、
本当に開発しやすいと思う。
しかし、これだけ充実した状況にもかかわらず
システムをハッキングできる可能性のあるドライバを
動かすためには開発者が金を払って登録しないといけない
手順としてはWLKでログをとって、それをMSへオンラインで登録し
MSがサインしたKeyとCatファイルをもらってドライバへサインする。
CrystalCPUIDなどの作者も言っていたが
これは本当にひどいシステムだと思う。
(ひどいとは言ってないが、フリーの開発者対策をして欲しい旨を直に伝えていた)
自分がLinux系開発を手がけるようになったのも
実はこの料金徴収システムがイヤになったからだったりする。
WindowsVistaでくされセキュリティを実装したMSが、Windows7で改善したらしいが
ドライバ開発者に対しても門戸を開いて欲しいと思う。
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
8月6日にリリースされてました。
WDFも1.9にバージョンアップ
Vista/2008Server/Windows7に対応しつつも、XPをまだ捨てて無いので
さくっとインストールすべし。
ddkbuild 7.3 R27
http://www.osronline.com/article.cfm?article=43
システムの環境変数にWLHBASEを作成してインストール後のフォルダを指定すればOK。
詳しくはddkbuild.cmdの頭のほうに書いてある
ドライバのテストの自動化はWLKでできる
WLK 1.4
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
デバイスタイプによっては、ごく基本的な試験しかしないので、あまり役に立たないかもしれないが
この試験が通らないことには安定性とは程遠い。
今回のリリースでは、PREfastの出力が、かなり強化されたのは大きい。
知らない人も多いと思うが、
PREfastはWDKについている静的解析ツールで、ソースコードの怪しい部分をチェックしてくれる。
たとえば
int size = 100; BYTE *p = (BYTE *)ExAllocateMemoryWithTag(size,NonPagedPool); ZeroMemory( p,size );
こんな感じでソースコードを書いてあると
pのNULLチェックがしてないよ!
って警告を出してくれる。
ほとんど関係ない場所なら使う前に
int size = 100; BYTE *p = (BYTE *)ExAllocateMemoryWithTag(size,NonPagedPool); ASSERT(p); ZeroMemory( p,size );
とでも書いておけば警告は消える。
でも、一番使えると思ったのは、コールバックなどMSが指定した書式の関数を実装する場合だ。
よくコピペで戻り値を間違えていても警告すら出ないことが多い。
戻り値がVOID型なのにNTSTATUSと書いてしまっていたりとか。
警告どおりに宣言を記述するとそういう間違いを前もって消すことができる。
今は仮想化を使えばOSのリカバリも簡単にできるが
仮想化が使えないドライバの開発も多い。
そういうときに前もってエラーをチェックしておくことで
BSOD率をぐっと下げることができるこういうツールは非常にありがたい。
しかもタダ。
ただ、PREfastはコンパイル時間が異常に長くなるので
普段の実装はPREfast無し。ある程度実装が終ったらPREfastあり。
とするのが良いと思う。ネガティブな愚痴は追記で。
デバッグもマシン2台あれば、WinDbgを使って
リアルタイムで変数を調査できて
アプリケーションのように自在にデバッグできる。
BSODが出ても、変数やメモリを簡単にチェックできるので、
本当に開発しやすいと思う。
しかし、これだけ充実した状況にもかかわらず
システムをハッキングできる可能性のあるドライバを
動かすためには開発者が金を払って登録しないといけない
手順としてはWLKでログをとって、それをMSへオンラインで登録し
MSがサインしたKeyとCatファイルをもらってドライバへサインする。
CrystalCPUIDなどの作者も言っていたが
これは本当にひどいシステムだと思う。
(ひどいとは言ってないが、フリーの開発者対策をして欲しい旨を直に伝えていた)
自分がLinux系開発を手がけるようになったのも
実はこの料金徴収システムがイヤになったからだったりする。
WindowsVistaでくされセキュリティを実装したMSが、Windows7で改善したらしいが
ドライバ開発者に対しても門戸を開いて欲しいと思う。
コメント 0