IOCTL_ATA_PASS_THROUGH_DIRECT IOCTL(ntddscsi.h)
IOCTL_ATA_PASS_THROUGH_DIRECT 애플리케이션은 다음과 같은 제한 사항으로 거의 모든 ATA 명령을 대상 디바이스에 보낼 수 있습니다.
대상 디바이스 유형에 대한 클래스 드라이버가 있는 경우 애플리케이션은 클래스 드라이버에 요청을 보내야 합니다. 따라서 애플리케이션은 디바이스에 대한 클래스 드라이버가 없는 경우에만 대상 논리 단위에 대한 시스템 포트 드라이버로 직접 이 요청을 보낼 수 있습니다.
포함된 ATA 명령에 기본 미니포트 드라이버가 메모리에 직접 액세스해야 하는 경우 애플리케이션은 IOCTL_ATA_PASS_THROUGH 대신 이 요청을 사용해야 합니다.
ATA 명령이 데이터 전송 작업을 요청하는 경우 호출자는 드라이버가 직접 데이터를 전송할 수 있는 캐시 정렬 버퍼를 설정해야 합니다. 호출자는 다음을 확인해야 합니다.
- 데이터 전송 길이는 디바이스의 I/O 맞춤 요구 사항을 충족합니다. 그렇지 않으면 이 IOCTL이 STATUS_INVALID_PARAMETER 실패합니다.
- 데이터 전송 길이는 디바이스의 최대 I/O 전송 길이보다 크지 않아야 합니다. 그렇지 않으면 디바이스가 요청에 실패할 것으로 예상됩니다.
IOCTL_ATA_PASS_THROUGH_DIRECT 요청은 일반적으로 대량의 데이터(16KB 이상)를 전송하는 데 사용됩니다.
주 코드
입력 버퍼
Irp-AssociatedIrp.SystemBuffer>의 버퍼에는 수행할 명령의 종류를 나타내는 작업 파일 입력 레지스터 집합을 포함하는 ATA_PASS_THROUGH_DIRECT 구조체가 포함되어 있습니다. 호출자는 포트 드라이버가 채우는 PathId, TargetId 및 Lun을 제외하고 이 구조체의 모든 멤버를 초기화해야 합니다. 데이터 출력 명령의 경우 ATA_PASS_THROUGH_DIRECTDataBuffer 멤버는 기록할 데이터가 포함된 캐시 정렬 버퍼를 가리킵니다.
입력 버퍼 길이
Parameters.DeviceIoControl.InputBufferLength는 Irp-AssociatedIrp.SystemBuffer에서 버퍼의 크기(바이트)>를 나타냅니다. InputBufferLength 값은 고정되며 전송되는 데이터의 양에 따라 달라지지 않습니다. sizeof(ATA_PASS_THROUGH_DIRECT)와 같습니다. 버퍼의 크기가 sizeof(ATA_PASS_THROUGH_DIRECT)보다 작으면 포트 드라이버가 I/O 요청에 실패하고 오류를 반환합니다.
출력 버퍼
포트 드라이버는 Irp-AssociatedIrp.SystemBuffer>의 버퍼에 저장하는 ATA_PASS_THROUGH_DIRECT 구조를 사용하여 반환 데이터의 형식을 지정합니다.
포트 드라이버는 전송된 데이터를 ATA_PASS_THROUGH_DIRECTDataBuffer 멤버가 가리키는 캐시 정렬 버퍼에 저장합니다.
포트 드라이버는 ATA 명령이 완료될 때 디바이스의 출력 레지스터에 있는 값으로 ATA_PASS_THROUGH_DIRECT CurrentTaskFile 멤버를 채웁니다. 애플리케이션은 출력 레지스터의 내용을 해석하여 디바이스에서 반환된 오류(있는 경우)를 결정합니다.
출력 버퍼 길이
포트 드라이버는 ATA_PASS_THROUGH_DIRECT 구조체의 DataTransferLength 멤버를 업데이트하여 디바이스에서 전송된 데이터의 양을 나타냅니다.
입력/출력 버퍼
없음
입력/출력 버퍼 길이
해당 사항 없음
상태 블록
정보 멤버는 Irp-AssociatedIrp.SystemBuffer>의 출력 버퍼에 반환된 바이트 수로 설정됩니다. Status 멤버는 STATUS_SUCCESS 또는 ATA_PASS_THROUGH_DIRECT 입력 Length 값이 잘못 설정된 경우 STATUS_BUFFER_TOO_SMALL 또는 STATUS_INVALID_PARAMETER 설정됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Server 2003 |
머리글 | ntddscsi.h(Ntddscsi.h 포함) |