FSCTL_OFFLOAD_WRITE 제어 코드
FSCTL_OFFLOAD_WRITE 제어 코드는 오프로드 쓰기 기본 형식을 지원하는 스토리지 시스템의 데이터 블록에 대한 오프로드 쓰기를 시작합니다.
이 작업을 수행하기 위해 미니필터 드라이버는 다음 매개 변수를 사용하여 FltFsControlFile 을 호출하고 파일 시스템, 리디렉터 및 레거시 파일 시스템 필터 드라이버는 다음 매개 변수를 사용하여 ZwFsControlFile 을 호출합니다.
매개 변수
인스턴스 [in]: FltFsControlFile만 해당 합니다. 호출자에 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FileObject [in]: FltFsControlFile만 해당 합니다. 쓸 파일을 지정하는 파일 포인터 개체입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FileHandle [in]: ZwFsControlFile만 해당 합니다. 쓸 파일의 파일 핸들입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
FsControlCode [in]: 작업에 대한 제어 코드입니다. 이 작업에 는 FSCTL_OFFLOAD_WRITE 사용합니다.
InputBuffer [in]: 읽을 데이터 블록의 크기와 오프셋을 포함하는 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 | 매개 변수가 잘못되었습니다. 설명 부분을 참조하세요. |
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 가 너무 작아 서 InputBuffer 가FSCTL_OFFLOAD_WRITE_INPUT 구조를 포함할 수 없거나 OutputBufferLength 가 너무 작아 서 OutputBuffer 가 FSCTL_OFFLOAD_WRITE_OUTPUT 구조를 수신할 수 없습니다. |
설명
오프로드 읽기는 일반 파일에만 사용할 수 있습니다. 지원되지 않는 파일 형식 목록은 STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED 대한 설명을 참조하세요.
STATUS_INVALID_PARAMETER 반환될 때 오류는 다음 잘못된 매개 변수 중 하나일 수 있습니다.
- 파일 크기가 PAGE_SIZE 미만입니다.
- InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_OUTPUT)
. - 이러한FSCTL_OFFLOAD_WRITE_INPUT 멤버 중 하나 이상이 잘못되었습니다. FileOffset 은 볼륨의 논리적 섹터 크기의 배수가 아닙니다. CopyLength 는 볼륨의 논리적 섹터 크기의 배수가 아닙니다. TransferOffset 은 볼륨의 논리적 섹터 크기의 배수가 아닙니다. 크기 는FSCTL_OFFLOAD_WRITE_INPUT 구조체의 크기가 아닙니다. FileOffset> 파일에 대한 유효한 VDL(데이터 길이)입니다. FileOffset + CopyLength>MAXULONGLONG.
요구 사항
요구 사항 유형 | 요구 사항 |
---|---|
지원되는 최소 클라이언트 | Windows 8 |
헤더 | Ntifs.h ( Ntifs.h 또는 Fltkernel.h 포함) |