2015-02-06 62 views
1

我試圖重定向在一個硬盤捲上的文件創建(即\ Device \ HarddiskVolume2)Minifilter在預操作中重定向文件創建?

我找到了redirecting file name in minifilter open pre。但我有一個系統對話框,如下

enter image description here

這裏是我的代碼:

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

我想這個對話框被不顯示。我應該怎麼做?

非常感謝!

+0

確認您已正確指定了卷路徑。 – Rohan 2015-02-06 11:59:49

+0

@Rohan我從'InstanceSetup'例程中獲得'gRedirectFullFilePath'。如果file.ext存在或不存在,當我拖放到此卷時,對話框始終顯示。 – GSP 2015-02-09 03:36:55

回答

1

您應該檢查WDK8.1示例中的SimRep File System Minifilter Driver示例。

例如它忽略體積打開(FO_VOLUME_OPEN)和目錄打開(SL_OPEN_TARGET_DIRECTORY)。也許這會給你帶來麻煩。
它還使用IoReplaceFileObjectName替換文件對象的名稱(應該比直接更改FILE_OBJECT更安全)。