2015-02-03 2 views
0

Я разрабатываю минифильтр для обнаружения перетаскивания & отбрасываем файл на жесткий диск. Когда пользователь перетаскивает & файл на диск:Minifilter, как изменить размер файла?

  1. Изменение имени файла на указанное имя файла. Пример: redirect_file_name.txt
  2. Затем я удаляю этот файл.

Но размер файла redirect_file_name.txt не изменяется.

  1. Если размер исходного файла составляет 1 ГБ, 1 Гб redirect_file_name.txt
  2. Если размер исходного файла составляет 100 МБ, 100 МБ redirect_file_name.txt

я изменить название источника на redirect_file_name.txt по this post

Как это сделать, чтобы изменить размер файла redirect_file_name.txt?

UPDATE: Используйте FltSetInformationFile с FileAllocationInformation

FILE_ALLOCATION_INFORMATION fileInformation; 
fileInformation.AllocationSize.QuadPart = 1024; 
status = FltSetInformationFile(FltObjects->Instance, 
          FltObjects->FileObject, 
          &fileInformation, 
          sizeof(FILE_ALLOCATION_INFORMATION), 
          FileAllocationInformation); 

Но статус является 0XC000000D (STATUS_INVALID_PARAMETER)

+0

Согласно другому сообщению, что вам ссылку, вы пытаетесь удалить перенаправленный файл. Итак, я понимаю, что удаление ZwDeleteFile не работает. В каком IRP вы пытаетесь удалить файл? Каково возвращение ZwDeleteFile? Некоторый код будет хорошим моментом, чтобы увидеть, что происходит. –

+0

ZwDeleteFile - это успех. Но если я не использую ZwDeleteFile для удаления файла перенаправления, я вижу, что размер файла будет одинаковым с исходным файлом. Поэтому я хочу изменить размер файла, когда я перетаскиваю его на диск. ** Я хочу изменить размер файла ** – GSP

+0

@ JonAnderOrtizDurántez Спасибо! Я решил свою проблему. – GSP

ответ

0

Use these code at IRP_MJ_SET_INFORMATION (как сказано на выступления)

FILE_ALLOCATION_INFORMATION fileInformation; 
fileInformation.AllocationSize.QuadPart = 1024; // Size of file 
status = FltSetInformationFile(FltObjects->Instance, 
          FltObjects->FileObject, 
          &fileInformation, 
          sizeof(FILE_ALLOCATION_INFORMATION), 
          FileAllocationInformation);