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

Я пытаюсь перенаправить создание файла на том жесткого диска (т.е. \ 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;

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

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

1

Решение

Вы должны проверить Драйвер минифильтра файловой системы SimRep пример из образцов WDK8.1.

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

1

Другие решения


По вопросам рекламы [email protected]