ファイルシステムミニフィルタードライバーのサンプル

ファイルシステムミニフィルタードライバーには、どのようなサンプルがあるかご存知でしょうか。

 

皆さん、こんにちは。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>

 

上記の内容が、ファイルシステムミニフィルタードライバーを開発される方のお役に立てば幸いです。