Я только начал работать с драйвером фильтра файловой системы, который отслеживает записи ввода-вывода в любой файл (прослушивает 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
.
Тем не менее, я довольно новичок в области разработки драйверов ... FltFsControlFile
правильная функция для меня здесь? Если да, то что представляет параметр Instance
? А если нет, то как мне это сделать?