Visual Studio 2019
Windows 10
NDIS ドライバを作りにあたって、 Windows ドライバの作り方を学ぶことが目的。
Windows ドライバを作る過程のメモを記載しておく。
Windows 10 上の Visula Studio 2019 を使う。
参考 https://docs.microsoft.com/ja-jp/windows-hardware/drivers/install/components-of-a-driver-package
典型的なドライバパッケージには、次のファイルが含まれている。
- ドライバファイル
- インストールファイル
- その他のファイル
ドライバとは、デバイスの I/O インタフェースを提供するパッケージの一部である。
典型的なドライバファイルは、拡張子に .sys
が付く DLL ファイル。
デバイスがインストールされると、 sys ファイルは、 %SystemRoot%\system32\drivers
にコピーされる。
マイクロソフトは、たくさんの共通なデバイスドライバを OS に同梱している。これらの同梱されたドライバを利用したい場合は、minidriver
を書くだけでよい。
minidriver は、システム提供のドライバに沿ったデバイス仕様を取り扱う。(COM ポートのドライバとか該当するかも。)
minidriver でさえ必要がないデバイスがいくつかある。例えば、モデムなど。
INF ファイルは、デバイスのインストールサポートに使われる system-provided device installation components という情報を含んでいる。
INF ファイルは、デバイスインストール中に %SystemRoot%\inf
ディレクトリへ Windows によってコピーされる。
デバイスは、INFファイルを持っていないといけない(must)。
ドライバカタログファイルは、ドライバパッケージの各ファイルのハッシュを含んだファイルのこと。
Windows は、そのハッシュを認証するために利用するので、出荷後は、変更できない。
カタログファイルが変更されていないことをかくにんするために、デジタル署名を用いるべき(should)。
デバイスインストールアプリケーション、デバイスアイコン、デバイスプロパティページといったファイル。
https://github.com/microsoft/Windows-driver-samples/ をクローンする
network/ndis/filter/filter.sln
を Visual Studio 2019 で開く。
開いたときに以下のエラーが出るときは、
Windows Driver Kit (WDK) をインストールすることで解決する。
条件 "$(_NT_TARGET_VERSION)<$(_NT_TARGET_VERSION_WIN7)" で、数字ではなく "" と評価された "$(_NT_TARGET_VERSION)" に対して、数値比較を実行しようとしました。
以下のエラーが出るときは、 プロジェクトの 構成プロパティ
-> Inf2Cat
-> General
-> Use Local TIme
に はい (/uselocaltime)
を入れる。
参考 http://blog.livedoor.jp/cielo_cielo/archives/65844807.html
1>Signability test failed.
1>
1>Errors:
1>22.9.7: DriverVer set to a date in the future (postdated DriverVer not allowed) in ndislwf\netlwf.inf.
1>
1>Warnings:
1>None
1>Debug\inf2catOutput.log : Inf2Cat error -2: "Inf2Cat, signability test failed." Double click to see the tool output.
とっつきやすい。 http://yamatyuu.net/computer/program/driver/beeptest32/index.html