2015-02-06 2 views
1

하드 디스크의 볼륨 (예 : \ Device \ HarddiskVolume2)에서 파일 생성을 리디렉션하려고합니다.Minifilter는 사전 작업에서 파일 생성을 리디렉션합니까?

발견 번호 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; 

나는이 대화 상자가 표시되지 싶은 :하지만 여기

enter image description here

내 코드는 다음과 같이 시스템 대화 상자를 얻었다. 어떻게해야합니까?

대단히 감사합니다.

+0

볼륨 경로가 올바르게 지정되었는지 확인하십시오. – Rohan

+0

@Rohan'InstanceSetup' 루틴에서'gRedirectFullFilePath'를 받았습니다. file.ext가 존재하거나 존재하지 않으면이 볼륨으로 드래그 앤 드롭하면 대화 상자가 항상 표시됩니다. – GSP

답변

1

WDK8.1 샘플의 SimRep File System Minifilter Driver 예제를 확인해야합니다.

예를 들어이 볼륨이 열립니다 무시 (FO_VOLUME_OPEN) 및 디렉토리 (SL_OPEN_TARGET_DIRECTORY) 열립니다. 어쩌면 그것은 당신에게 문제를 일으키는 것일 수 있습니다.
IoReplaceFileObjectName을 사용하여 파일 개체의 이름을 바꿉니다 (FILE_OBJECT의 직접 변경보다 안전해야 함).

관련 문제