デバイスドライバは作るのが難しい。
コンパイルしてもたかだか数十kbのバイナリなのだが。
何が苦労するかというと、Windowsカーネルの内部で処理が落ちると、なぜ落ちたかすぐに分かりづらい。「Windowsのソースがあれば…」と何度思ったことか。
それから、動作対象にWin98系を含めること。Win2000系であればドライバもコーディングした通りに比較的素直に動いて、そしてバグがあれば素直に落ちてくれる。
でも、Win98系だと同じコードでもほとんど意味不明な場所で落ちたりしてまた大変だし、デバッガが全てのエラーの割り込みを拾えず、デバッガで止められない落ち方をする場合がある。
設計の点から見ると、いくらWDMであってもあまりドライバスタックを積み上げないでいいような設計をすること。…と言っても今回の仕事はその構成上、最高で5段のドライバが重なり、さらに複数のPDOというトリッキーな構成になっている。その分、動作の安定性を確保するのが難しい。
まぁ、普通のWindowsアプリ感覚で考えていると痛い目に遭うってことですね。そして、現場の人間が苦しむのです。
コメント