イベント駆動によるデバイスドライバ - その2さてキーボードを押下することでISTまで制御が渡されることを確認しました。このようにISTまで来てしまえば、後はデバイスドライバとしての処理をこなすことになります。その時にこのISTを動かすための設定を再確認してみます。
ISTを駆動するためには、WaitForSingleObject関数で待つためのEventオブジェクトを作成し、そしてそのEventオブジェクトをInterruptInitialize関数を使ってシステム割り込み番号と結びつけてあげる必要があります。参考にしているキーボードドライバのISTではすでにこれらの設定が終了しています。そこでこのISTを起動するにあたり、設定を行っている個所を追ってみます。
先の記事でIST内部でブレークをかけましたが、このブレークがかかった状態でISTがどのように呼び出されたのかを確認します。ブレークしている個所をだれが呼び出したのかを見るためには“デバッグ:ウィンドウ:呼び出し履歴”メニューを選択します。すると以下のようなウィンドウが開きます。
この情報を見ると、このISTはnk.exe、すなわちカーネルプロセスで動作していて次のような順序で呼び出しが行われていることがわかります。これを呼び出した順に並べてみると、以下のようになります。
(1/3) Next»
Comments(0)|コメントを書く
List all categories
Recent Comments
About
このブログを友達に教える