FSCTL_SET_ZERO_DATA 제어 코드
FSCTL_SET_ZERO_DATA 컨트롤 코드는 지정된 파일 범위를 0으로 채웁니다. 파일이 스파스 또는 압축된 경우 NTFS 파일 시스템은 파일의 디스크 공간을 할당 취소할 수 있습니다. 이렇게 하면 파일 크기를 확장하지 않고 바이트 범위를 0으로 설정합니다.
드라이버에서 이 작업을 수행하려면 다음 매개 변수를 사용하여 FltFsControlFile 을 호출합니다.
매개 변수
인스턴스: 호출자에 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FileObject [in]: 0을 쓸 파일에 대한 파일 개체 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FsControlCode [in]: 작업에 대한 제어 코드입니다.
이 작업에 는 FSCTL_SET_ZERO_DATA 사용합니다.
- InputBuffer [in]: 0으로 설정할 파일의 범위를 지정하는 FILE_ZERO_DATA_INFORMATION 또는 FILE_ZERO_DATA_INFORMATION_EX 구조체에 대한 포인터입니다.
FileOffset 멤버는 0으로 설정할 첫 번째 바이트의 바이트 오프셋이며 BeyondFinalZero 멤버는 마지막 0(0) 바이트를 초과하는 첫 번째 바이트의 바이트 오프셋입니다.
FILE_ZERO_DATA_INFORMATION_EXFlags 멤버는 작업에 대한 한정자를 지정합니다. 예를 들어 Flags 가 FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA 설정되면 이 파일 범위에 해당하는 캐시의 내용이 제거되지 않습니다.
InputBufferLength [in]: 입력 버퍼의 크기(바이트)입니다.
OutputBuffer [out]: 이 작업에 사용되지 않습니다. 을 NULL로 설정합니다.
OutputBufferLength [out]: 이 작업에 사용되지 않습니다. 를 0으로 설정합니다.
상태 블록
FltFsControlFile 은 STATUS_SUCCESS 또는 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 의미 |
---|---|
상태 _INSUFFICIENT_RESOURCES | 메모리가 부족하여 작업을 완료할 수 없습니다. |
STATUS_INVALID_PARAMETER | InputBufferLength는 FILE_ZERO_DATA_INFORMATION 구조체의 크기보다 작거나 지정된 파일이 시스템 메타데이터 파일 또는 디렉터리입니다. |
STATUS_ACCESS_DENIED | FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA 사용자 모드에서 설정됩니다. |
STATUS_MEDIA_WRITE_PROTECTED | 볼륨은 현재 쓰기가 보호됩니다. |
요구 사항
요구 사항 유형 | 요구 사항 |
---|---|
헤더 | Ntifs.h ( Ntifs.h 포함) |