파일이 닫혀있을 때 파일을 변경하고 열 때 변경 사항을 되돌리고 싶습니다. 필자는 파일을 암호화하고 싶지 않은 것을 제외하고는 암호화 드라이버와 비슷합니다.MiniFilter 드라이버 - IRP_MJ_CLOSE 및 IRP_MJ_CREATE의 파일 바이트 수정
Visual Studio 2012에 WDK8이 포함 된 새로운 "필터 드라이버 : 파일 시스템 미니 필터"프로젝트를 만들고 콜백 함수로 PreCreate, PostCreate, PreClose 및 PostClose를 등록했습니다.
예를 들어, 파일의 IRP_MJ_CLOSE에의 바이트가있는 {72,101,108,108,111} ("안녕하세요"), 나는 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;
}
내가 주제에 대한 몇 가지 지침을 싶습니다.
또한 이것을 디버깅하는 가장 좋은 방법은 무엇입니까? Windows 7 디버그로 인쇄하는 방법을 찾지 못했습니다.
감사합니다. gfgqtmakia.
편집 : http://code.msdn.microsoft.com/windowshardware/swapBuffer-File-System-6b7e6e2d을 읽었지만 읽기/쓰기 용이므로 도움이되지 않을 것입니다. 다루지 않으려 고합니다.
EDIT2 : 파일이 하드 드라이브에 있고 IRP 중간에 있지 않으면 PreCreate 및 PostClose에서 변경해야합니다. 그러면 버퍼를 처리 할 필요가 없습니다. " 날아라. "그러나 디스크에?
감사합니다. 그러나 PreCreate 및 PostClose는 어떻습니까? – assafmo
@gfgqtmakia 같은 주장이 그들에게도 적용됩니다. – Rohan
그러나 파일이 HD에서로드되기 전과 파일이 HD에 기록 된 후입니다. – assafmo