【发布时间】:2011-08-10 05:26:28
【问题描述】:
我刚刚开始研究文件系统过滤器驱动程序,该驱动程序监视对任何文件的 I/O 写入(侦听 IRP_MJ_WRITE 请求),并在文件碎片化时透明地对文件进行碎片整理。
目前,我有这样的代码:
NTSTATUS FsFilterDispatchWrite(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp)
{
PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject;
NTSTATUS result = FsFilterDispatchPassThrough(DeviceObject, Irp);
//FltFsControlFile(???);
return result;
}
我需要在其中发出FSCTL_GET_RETRIEVAL_POINTERS I/O 控制代码。
但是,我对驱动程序开发领域还很陌生...FltFsControlFile 是否适合我在这里使用?如果是这样,Instance 参数代表什么?如果没有,那我该怎么做呢?
【问题讨论】:
-
如果您对驱动程序开发比较陌生,您应该先学习一些较轻的东西。但是,如果您对旧版 FSFD 感兴趣,我建议您研究旧版 IFS 工具包中的
filespy和sfilter示例,如果您可以将过滤器管理器作为先决条件,我建议您研究新版 FSFD 中的微过滤器示例。跨度> -
@STATUS:好的,我去看看,谢谢。
-
@STATUS:我在哪里可以找到这些示例?我查看了 Windows 7 WDK 中的其他示例,但我认为这不是您所指的...
-
@Mehrdad:那个不再包括旧的 FSFD 示例。最好的开始是
7600.16385.1\src\filesys\miniFilter\passThrough或7600.16385.1\src\filesys\miniFilter\minispy,以了解他们所做的事情。如果您需要 IFS 工具包中的旧示例,请告诉我。我会看看旧的 WDK 是否有它,否则可能会为您上传 3790.1830 IFS 套件中的示例代码。 -
@STATUS:当然,我会告诉你的,非常感谢你的提议。 :-) 现在我遇到的问题是我尝试在虚拟机上编译和安装空过滤器示例,但是每当我启动驱动程序时,一切都会突然冻结并且 CPU 使用率飙升。知道会发生什么吗? (作为参考,我实际上是在使用 Visual Studio 的编译器(!)进行编译,但我不认为这会是一个问题,不是吗?我正在设置
/DRIVER:WDM标志和来自 WDK 的正确库路径和一切,所以应该没问题...)
标签: filesystems kernel defragmentation nt filter-driver