阅读:1676回复:5
通过文件驱动如何修改文件的长度
写了一个文件过滤驱动,想修改一下驱动向应用层程序返回的数据,使用户右点击相应文件,点击属性后,返回的文件长度是我修改后的长度。一直没有成功,请教大牛,该如何实现。
我用的方法:是拦截 IRP_MJ_QUERY_INFORMATION的FileStandardInformation,并修改从下层驱动返回的结构体PFILE_STANDARD_INFORMATION。具体代码是: case FileStandardInformation: { PFILE_STANDARD_INFORMATION stand_infor = (PFILE_STANDARD_INFORMATION)buffer; stand_infor->AllocationSize.QuadPart -= CF_FILE_HEADER_SIZE; stand_infor->EndOfFile.QuadPart -= CF_FILE_HEADER_SIZE; break; } 修改已经完成,但是属性里的文件长度信息一直没有变化。 同时也拦截处理了:FileAllInformation、FileAllocationInformation、FileValidDataLengthInformation、FileStandardInformation、FileEndOfFileInformation、FilePositionInformation、FileStreamInformation。也没有起到作用。 |
|
沙发#
发布于:2010-09-07 14:51
帮忙顶
|
|
板凳#
发布于:2010-09-07 14:52
使用procmon工具看看
|
|
地板#
发布于:2010-09-07 17:03
有哪位了解,能具体说说吗?
|
|
地下室#
发布于:2010-09-08 09:27
不错!
|
|
5楼#
发布于:2010-09-08 10:17
处理DIRCTRL即可
|
|