2015-02-03 4 views
0

나는 하드 디스크에 파일을 드롭 & 드래그를 감지 minifilter를 개발하고 있습니다. 사용자가 & 파일을 드라이브에 끌어다 놓을 때 :Minifilter 파일 크기를 변경하는 방법?

  1. 파일 이름을 지정된 파일 이름으로 변경하십시오. 예 : redirect_file_name.txt
  2. 그런 다음이 파일을 삭제합니다.

그러나 redirect_file_name.txt 파일의 크기는 변경되지 않습니다.

  1. 소스 파일의 크기가 1기가바이트 경우

    는 redirect_file_name.txt 내가 this post

    에 의해 redirect_file_name.txt하는 소스의 이름을 변경 소스 파일의 크기 공간이 100MB 인 경우, redirect_file_name.txt 100MB의

입니다 1기가바이트

  • 입니다

    redirect_file_name.txt 파일의 크기를 변경하려면 어떻게해야합니까?

    UPDATE : FileAllocationInformation

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

    그러나 상태 사용 FltSetInformationFile는 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);