2015-02-06 1 views
1

Я пытаюсь перенаправить создание файла на том жесткого диска (i.e \ 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

+0

@Rohan Я получаю 'gRedirectFullFilePath' из' InstanceSetup'. Если file.ext существует или нет, диалог всегда отображается, когда я перетаскиваю его на этот том. – GSP

ответ

1

Вы должны проверить пример SimRep File System Minifilter Driver из образцов WDK8.1.

Например, он игнорирует открывает объем (FO_VOLUME_OPEN) и каталог открывается (SL_OPEN_TARGET_DIRECTORY). Возможно, это вызывает у вас проблемы.
Он также использует IoReplaceFileObjectName для замены имени файлового объекта (должен быть более безопасным, чем прямое изменение FILE_OBJECT).

Смежные вопросы