FSCTL_OFFLOAD_WRITE 제어 코드

FSCTL_OFFLOAD_WRITE 제어 코드는 오프로드 쓰기 기본 형식을 지원하는 스토리지 시스템의 데이터 블록에 대한 오프로드 쓰기를 시작합니다.

이 작업을 수행하기 위해 미니 필터 드라이버는 다음 매개 변수를 사용하여 FltFsControlFile 을 호출하고 파일 시스템, 리디렉터 및 레거시 파일 시스템 필터 드라이버는 다음 매개 변수를 사용하여 ZwFsControlFile 을 호출합니다.

매개 변수

인스턴스 [in]
FltFsControlFile 만 해당됩니다. 호출자에 대한 불투명 인스턴스 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

FileObject [in]
FltFsControlFile 만 해당됩니다. 쓸 파일을 지정하는 파일 포인터 개체입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

FileHandle [in]
ZwFsControlFile만 해당됩니다 . 쓸 파일의 파일 핸들입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

FsControlCode [in]
작업에 대한 제어 코드입니다. 이 작업에 는 FSCTL_OFFLOAD_WRITE 사용합니다.

InputBuffer
읽을 데이터 블록의 크기와 오프셋을 포함하는 FSCTL_OFFLOAD_WRITE_INPUT 구조체에 대한 포인터입니다.

InputBufferLength [in]
InputBuffer가 가리키는 버퍼의 크기(바이트)입니다. 이 값은 sizeof(FSCTL_OFFLOAD_WRITE_INPUT)입니다.

OutputBuffer [out]
읽을 데이터 블록의 크기와 오프셋을 포함하는 FSCTL_OFFLOAD_WRITE_INPUT 구조체에 대한 포인터입니다.

OutputBufferLength [out]
OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다. 이 값은 적어도 sizeof(FSCTL_OFFLOAD_READ_OUTPUT)여야 합니다.

상태 블록

작업이 성공하면 FltFsControlFile 또는 ZwFsControlFile이 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 함수가 다음 NTSTATUS 값 중 하나를 반환할 수 있습니다.

용어 설명

STATUS_INVALID_DEVICE_REQUEST

지정된 핸들이 유효한 파일 핸들이 아닙니다.

STATUS_INVALID_PARAMETER

파일 크기가 PAGE_SIZE 미만입니다.

또는

InputBufferLength<sizeof(FSCTL_OFFLOAD_WRITE_INPUT).

또는

이러한 FSCTL_OFFLOAD_WRITE_INPUT 멤버 중 하나 이상이 잘못되었습니다.

FileOffset 은 볼륨의 논리적 섹터 크기의 배수가 아닙니다. CopyLength 는 볼륨의 논리 섹터 크기의 배수가 아닙니다. TransferOffset 은 볼륨의 논리적 섹터 크기의 배수가 아닙니다. 크기FSCTL_OFFLOAD_WRITE_INPUT 구조체의 크기가 아닙니다. FileOffset> 파일에 대한 유효한 VDL(데이터 길이)입니다. FileOffset + CopyLength>MAXULONGLONG.

STATUS_NOT_SUPPORTED

이 볼륨에서는 읽기 작업을 오프로드할 수 없습니다.

STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED

요청된 파일 형식은 지원되지 않습니다. 이러한 파일 형식에서는 오프로드 작업이 지원되지 않습니다.

  • 거래된 파일(TxF)
  • 사용자가 아닌 파일
  • 압축된 파일
  • 스파스 파일
  • 암호화된 파일
  • NTFS Metatdata 파일

STATUS_TOO_LATE

볼륨이 분리된 후 쓰기 작업이 시도되었습니다.

STATUS_FILE_DELETED

이 파일의 데이터 스트림이 잘못되었습니다.

STATUS_FILE_CLOSED

파일 핸들이 닫혔습니다.

STATUS_INVALID_HANDLE

지정된 파일 핸들이 잘못되었습니다.

STATUS_FILE_LOCK_CONFLICT

현재 파일 잠금 상태로 인해 읽기 또는 쓰기 권한을 부여할 수 없습니다.

STATUS_END_OF_FILE

FSCTL_OFFLOAD_WRITE_INPUTFileOffset 멤버는 EOF(파일 끝) 후에 시작됩니다.

STATUS_DISMOUNTED_VOLUME

분리된 볼륨에서는 오프로드 쓰기가 발생할 수 없습니다.

STATUS_MEDIA_WRITE_PROTECTED

볼륨은 읽기 전용입니다.

STATUS_INSUFFICIENT_RESOUCES

요청을 완료하는 데 사용할 수 있는 리소스가 부족합니다.

STATUS_BUFFER_TOO_SMALL

InputBufferLength 가 너무 작아 서 InputBufferFSCTL_OFFLOAD_WRITE_INPUT 구조를 포함할 수 없습니다.

또는

OutputBufferLength 가 너무 작아 서 OutputBufferFSCTL_OFFLOAD_WRITE_OUTPUT 구조를 수신할 수 없습니다.

설명

읽기 오프로드는 일반 파일에만 사용할 수 있습니다. 지원되지 않는 파일 형식 목록은 STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED 대한 설명을 참조하세요.

요구 사항

Version

Windows 8 시작해서 사용할 수 있습니다.

헤더

Ntifs.h(Ntifs.h 또는 Fltkernel.h 포함)

참고 항목

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT