個人的なメモ置き場ブログに書くほどのものでもないことを書きます

Windowsのデバイスドライバの勉強

http://www.sciencepark.co.jp/device_driver/dvdr/

階層化

ドライバオブジェクトの初期化

  • (Windows98・Windows2000以降のWindowsでは)プラグ&プレイがあるため、ドライバが起動されたときにデバイスが存在するとは限らない
  • ドライバは実行されると必ずDriverEntry関数から実行される
  • 引数としてドライバオブジェクト(のポインタ)が渡される
https://msdn.microsoft.com/en-us/library/windows/h...
  • ドライバオブジェクトには、IRPメジャー番号(後述)に対応するエントリがあり、IOマネージャはこのテーブルとIRPメジャー番号を元に必要な関数を呼び出す。


(後で書く)

ioポートの場合は、最後にREAD_PORT_UCHAR(SHORT,LONG)やWRITE_PORT_UCHAR(SHORT,LONG)という関数が呼び出され、この関数が実際にハードウェアの読み書きをする。
このへんにまとまっている
https://msdn.microsoft.com/en-us/library/windows/h...


https://msdn.microsoft.com/en-us/library/windows/h...

Infファイルの文法をチェックする

ChkInfを使う

自分の環境だと以下に入っていた
C:\Program Files (x86)\Windows Kits\10\Tools\x86\ChkInf

上記のディレクトリが管理者権限がないと書き込めないぽいので、コマンドプロンプトを管理者権限で動かして実行してみる。
ただのperlスクリプトなので、他のところに移動させてよいかも。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

メニューバーA

ここは自由に編集できるエリアです。

管理人/副管理人のみ編集できます