Создание файла перенаправления минифильтра в предварительной операции?

Я пытаюсь перенаправить создание файла на том жесткого диска (например, \Device\HarddiskVolume2)

Я обнаружил имя файла перенаправления в минифильтре, открытом предварительно. Но я получил системный диалог, как показано ниже

введите здесь описание изображения

Вот мой код:

// I tested with pFileName = &Data->Iopb->TargetFileObject->FileName;
// It has same result
pFileName = &FltObjects->FileObject->FileName;
if (pFileName->Buffer != NULL)
    ExFreePool(pFileName->Buffer);

// gRedirectFullFilePath is \\Device\\HarddiskVolume2\\File.ext
pFileName->Length = gRedirectFullFilePath.Length;
pFileName->MaximumLength = pFileName->Length;
pFileName->Buffer = (PWCH) ExAllocatePool(NonPagedPool, pFileName->MaximumLength);
if (pFileName->Buffer == NULL)
    goto PreOperationCleanup;

RtlCopyUnicodeString(pFileName, &gRedirectFullFilePath);

// Change I/O status
Data->IoStatus.Information = IO_REPARSE;
Data->IoStatus.Status = STATUS_REPARSE;
Data->Iopb->TargetFileObject->RelatedFileObject = NULL;

FltSetCallbackDataDirty(Data);

return FLT_PREOP_COMPLETE;

Я хочу, чтобы этот диалог не отображался. Как мне поступить?

Большое спасибо!


person GSP    schedule 06.02.2015    source источник
comment
Убедитесь, что вы правильно указали путь к тому.   -  person Rohan    schedule 06.02.2015
comment
@Rohan Я получаю gRedirectFullFilePath из InstanceSetup процедуры. Если file.ext существует или нет, диалоговое окно всегда отображается, когда я перетаскиваю его на этот том.   -  person GSP    schedule 09.02.2015


Ответы (1)


Вы должны проверить пример SimRep File System Minifilter Driver из WDK8.1. образцы.

Например, он игнорирует открытие тома (FO_VOLUME_OPEN) и открытие каталога (SL_OPEN_TARGET_DIRECTORY). Возможно, это вызывает у вас проблемы.
Он также использует IoReplaceFileObjectName для замены имени файлового объекта (должно быть безопаснее, чем прямое изменение FILE_OBJECT).

person ge0rdi    schedule 15.03.2015