【发布时间】:2012-08-24 02:08:32
【问题描述】:
我想在关闭文件时更改文件,并在打开文件时撤消更改。 它有点像加密驱动程序,只是我不想加密文件。
我在 Visual Studio 2012 中使用 WDK8 创建了一个新的“Filter Driver: Filesystem Mini-Filter”项目,并将 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;
}
我想要一些关于这个主题的指导。
还有什么是最好的调试方法?我还没有找到打印到 Windows 7 调试的方法。
谢谢! gfgqtmakia.
编辑:我读过http://code.msdn.microsoft.com/windowshardware/swapBuffer-File-System-6b7e6e2d,但我认为它对我没有帮助,因为它是用于读/写的,我不想处理。
EDIT2:或者我应该在 PreCreate 和 PostClose 中进行更改,当文件在硬盘驱动器上而不是在 IRP 中间时,我就不需要“即时”处理缓冲区" 但在磁盘上?
【问题讨论】:
标签: windows-7 driver minifilter irp