イベント駆動によるデバイスドライバ - その2

さてキーボードを押下することでISTまで制御が渡されることを確認しました。このようにISTまで来てしまえば、後はデバイスドライバとしての処理をこなすことになります。その時にこのISTを動かすための設定を再確認してみます。

ISTを駆動するためには、WaitForSingleObject関数で待つためのEventオブジェクトを作成し、そしてそのEventオブジェクトをInterruptInitialize関数を使ってシステム割り込み番号と結びつけてあげる必要があります。参考にしているキーボードドライバのISTではすでにこれらの設定が終了しています。そこでこのISTを起動するにあたり、設定を行っている個所を追ってみます。

先の記事でIST内部でブレークをかけましたが、このブレークがかかった状態でISTがどのように呼び出されたのかを確認します。ブレークしている個所をだれが呼び出したのかを見るためには“デバッグ:ウィンドウ:呼び出し履歴”メニューを選択します。すると以下のようなウィンドウが開きます。

この情報を見ると、このISTはnk.exe、すなわちカーネルプロセスで動作していて次のような順序で呼び出しが行われていることがわかります。これを呼び出した順に並べてみると、以下のようになります。

  • K.Coredll.dll:TreadBaseFunc()・・・カーネルWin32APIコール
  • KbdMouse.dll:Ps2KeybdIsrThread()
  • KbdMouse.dll:Ps2Keybd::IsrThreadProc()
  • KbdMouse.dll:KeybdIstLoop()・・・現
  • (1/3) Next»

    Windows CE デバイスドライバ開発
    Jul 13, 2008




    Comments(0)|コメントを書く

    List all categories
    Recent Comments
    About

    このブログを友達に教える

    コミュニティ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説 | 掲示板


    画面TOP↑


    powered by cocolog