我正在尝试重定向硬盘卷上的文件创建(即\ Device \ HarddiskVolume2)
我找到了redirecting file name in 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;
我希望此对话框不显示。我应该怎么做?
非常感谢!
最佳答案
您应该检查WDK8.1示例中的SimRep File System Minifilter Driver示例。
例如,它忽略卷打开(FO_VOLUME_OPEN)和目录打开(SL_OPEN_TARGET_DIRECTORY)。也许这给您带来麻烦。
它还使用IoReplaceFileObjectName
替换文件对象的名称(应该比直接更改FILE_OBJECT更安全)。