文件系统筛选器驱动程序:创建碎片整理程序

时间:2011-04-21 10:48:55

标签: filesystems kernel defragmentation nt filter-driver

我刚刚开始研究一个文件系统过滤器驱动程序,它监视对任何文件的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参数代表什么?如果没有,那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

Merhad,

FltFsControlFile是正确使用的API,但是记住它不值得从过滤器驱动程序进行碎片整理,在内核模式下在IO路径上进行碎片整理(或者从工作线程进行碎片整理将非常高效)。

Windows使大部分文件可以从用户模式进行碎片整理。检查http://technet.microsoft.com/en-us/library/dd405526(VS.85).asphttp://technet.microsoft.com/en-us/library/aa364577(VS.85).aspx

要监控FS活动,最好的办法是使用USN期刊,这非常有效。不对系统施加任何负担

http://technet.microsoft.com/en-us/library/aa365736(VS.85).aspx