ファイルシステムミニフィルタードライバーのサンプル
ファイルシステムミニフィルタードライバーには、どのようなサンプルがあるかご存知でしょうか。
皆さん、こんにちは。Windows Driver Kit サポートチームの津田です。今回は、ファイルシステムミニフィルタードライバーのサンプルにどのようなものがあるかの一覧とそれぞれがある場所についてご案内します。サンプルの場所自体は、以下のサイトの [Download ZIP] ボタンで Windows-driver-samples-master.zipをダウンロードしていただいたことを前提に、ポイントします。
<https://github.com/Microsoft/Windows-driver-samples>
AVScan
AVScan は、Anti-Virus (アンチウィルス) を目的として、ファイル内のデータをスキャンする動作を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\avscan フォルダにあります。
CancelSafe
ミニフィルターでのキャンセルセーフキューの使い方のサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\cancelSafe フォルダにあります。
CDO
ミニフィルターでの Control Device Object (CDO) の使い方のサンプルです。ミニフィルターには、アプリケーションとの通信方法が用意されているので、必ずしもアプリケーションがミニフィルターの CDO を CreateFile でオープンして、そのハンドルを使ってミニフィルターと通信する、という必要はありません。ただ、そのような方法を必要とされる方のために、参考として公開されています。
\Windows-driver-samples-master\filesys\miniFilter\cdo フォルダにあります。
Change
ファイルの変更を検知するサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\change フォルダにあります。
Ctx
インスタンス、ファイル、ストリーム、ストリームハンドルに、コンテキストをアタッチしたり削除したりする方法を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\ctx フォルダにあります。
Delete
ファイルやストリームが削除されることを検知する方法を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\delete フォルダにあります。
MetadataManager
ミニフィルター自身のためにメタデータを保存するファイルの使い方を示すサンプルです。そのファイルへの変更をブロックしたり、一時的にそのファイルをクローズしたりします。
\Windows-driver-samples-master\filesys\miniFilter\MetadataManager フォルダにあります。
Minispy
システム上の任意の I/O を監視しログに記録する方法を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\minispy フォルダにあります。
NameChanger
あるボリュームの中で、あるディレクトリを別のディレクトリに見せる方法を示すサンプルです。具体的な動作は、「NameChanger File System Minifilter Driver サンプルを動かしてみる」<https://blogs.msdn.microsoft.com/jpwdkblog/2016/03/29/namechanger-file-system-minifilter-driver-%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/> のエントリですでに紹介しています。
\Windows-driver-samples-master\filesys\miniFilter\NameChanger フォルダにあります。
NullFilter
ミニフィルターをフィルターマネージャーに登録するところを示すサンプルです。一切のコールバックをもちません。
\Windows-driver-samples-master\filesys\miniFilter\nullFilter フォルダにあります。
PassThrough
任意の I/O リクエストに対してコールバックを指定する方法を示すサンプルです。それぞれのコールバックでは何もしません。Pre-operation と Post-operation の両方のコールバックが呼ばれます。
\Windows-driver-samples-master\filesys\miniFilter\passThrough フォルダにあります。
Scanner
AVScan と同様、Anti-Virus (アンチウィルス) を目的として、ファイル内のデータをスキャンする動作を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\scanner フォルダにあります。
SimRep
ミニフィルターが、ファイルオープンを他のパスにリダイレクトするリパースポイントの動作をシミュレートする方法を示すサンプルです。
\Windows-driver-samples-master\filesys\miniFilter\simrep フォルダにあります。
SwapBuffer
データのRead/Write の際にバッファを交換する方法を示すサンプルです。この方法は、特に、暗号化フィルターを開発したい方に役に立ちます。
\Windows-driver-samples-master\filesys\miniFilter\swapBuffers フォルダにあります。
- 参考文献
File system driver samples
<https://msdn.microsoft.com/en-us/library/windows/hardware/mt348984(v=vs.85).aspx>
上記の内容が、ファイルシステムミニフィルタードライバーを開発される方のお役に立てば幸いです。