Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否在预操作中重定向文件创建?_C++_Driver_Minifilter_Windows Kernel_Kernel Mode - Fatal编程技术网

C++ 是否在预操作中重定向文件创建?

C++ 是否在预操作中重定向文件创建?,c++,driver,minifilter,windows-kernel,kernel-mode,C++,Driver,Minifilter,Windows Kernel,Kernel Mode,我正在尝试重定向硬盘卷(即\Device\HarddiskVolume2)上的文件创建 我找到了。但我得到了一个系统对话框,如下所示 这是我的密码: // I tested with pFileName = &Data->Iopb->TargetFileObject->FileName; // It has same result pFileName = &FltObjects->FileObject->FileName; if (pFileNam

我正在尝试重定向硬盘卷(即\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;
我希望此对话框不显示。我该怎么办

非常感谢

您应该检查WDK8.1示例中的示例

例如,它忽略卷打开(FO_volume_OPEN)和目录打开(SL_OPEN_TARGET_directory)。也许这给你带来了麻烦。

它还使用
IoReplaceFileObjectName
替换文件对象的名称(应该比直接更改文件对象更安全)。

验证您是否正确指定了卷路径。@Rohan I get
gRedirectFullFilePath
来自
InstanceSetup
例程。如果file.ext存在或不存在,则在拖放到此卷时始终显示该对话框。