閉じたときにファイルを変更し、開いたときに変更を元に戻したいのですが。ファイルを暗号化したくないことを除けば、暗号化ドライバーのようなものです。
Visual Studio 2012でWDK8を使用して新しい「フィルタードライバー:ファイルシステムミニフィルター」プロジェクトを作成し、コールバック関数としてPreCreate、PostCreate、PreClose、およびPostCloseを登録しました。
たとえば、バイトが{72,101,108,108,111}( "Hello")であるファイルのIRP_MJ_CLOSEで、PostClose関数の後、ファイルがハードディスク上で次のようになるようにします:{10,11,12,72,101,108,108,111}。
私はそれがただのように簡単ではないと思う:
FLT_PREOP_CALLBACK_STATUS
PreClose (
_Inout_ PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *CompletionContext
)
{
//...
//some if statment...
{
Data->Iopb->Parameters.Write.WriteBuffer = newBfr;
Data->Iopb->Parameters.Write.Length = newLen;
}
//...
return FLT_PREOP_SUCCESS_WITH_CALLBACK;
}
この件についてのガイダンスが欲しいのですが。
また、これをデバッグするための最良の方法は何ですか?Windows7のデバッグに出力する方法が見つかりません。
ありがとう!gfgqtmakia。
編集:http ://code.msdn.microsoft.com/windowshardware/swapBuffer-File-System-6b7e6e2dを読みましたが、読み取り/書き込み用であるため、役に立たないと思います。対処したい。
EDIT2:または、ファイルがIRPの途中ではなくハードドライブ上にある場合は、PreCreateとPostCloseで変更を行う必要があります。そうすれば、「オンザフライ」でバッファを処理する必要はありません。ディスク?