2

我正在尝试在硬盘卷上重定向文件创建(即 \Device\HarddiskVolume2)

在 minifilter open pre 中找到了重定向文件名。但我有一个系统对话框如下

在此处输入图像描述

这是我的代码:

// 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;

我希望这个对话框不显示。我应该怎么做?

非常感谢!

4

1 回答 1

1

您应该检查WDK8.1 示例中的 SimRep 文件系统 Minifilter 驱动程序示例。

例如,它忽略卷打开 ( FO_VOLUME_OPEN ) 和目录打开 ( SL_OPEN_TARGET_DIRECTORY )。也许这给你带来了麻烦。
它还用于IoReplaceFileObjectName替换文件对象的名称(应该比直接更改FILE_OBJECT更安全)。

于 2015-03-15T15:46:46.560 回答