IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL(ntddscsi.h)
IOCTL_MPIO_PASS_THROUGH_PATH_EX 제어 코드 요청은 IOCTL_MPIO_PASS_THROUGH_PATH 요청의 확장 버전입니다. 이 요청은 양방향 데이터 전송을 지원하며 CDB(명령 데이터 블록) > 16바이트를 허용합니다.
이 I/O 제어 코드를 사용하면 애플리케이션 또는 커널 드라이버가 SCSI 명령을 지정된 실제 LUN에 보낼 수 있습니다. 이 I/O 컨트롤 코드의 사용에는 다음과 같은 제한 사항이 적용됩니다.
- 의사 LUN에 대한 클래스 드라이버가 있는 경우 애플리케이션은 해당 클래스 드라이버에 요청을 보내야 합니다. 따라서 애플리케이션은 디바이스에 대한 클래스 드라이버가 없는 경우에만 MPIO에 직접 이 요청을 보낼 수 있습니다.
- 모든 통과 요청은 동기적이어야 합니다.
- 애플리케이션은 디바이스에 통과 요청을 보내는 데 관리자 권한이 필요하지 않지만 디바이스에 대한 읽기/쓰기 권한이 있어야 합니다.
- 요청은 SCSI 통과 요청(포함된 SCSI_PASS_THROUGH_EX 구조)과 특정 지시문으로 구성됩니다.
- SCSI 통과 구조는 SCSI_PASS_THROUGH_EX 설명한 대로 이러한 요구 사항을 충족해야 합니다.
- 실제 LUN을 요청한 DSM을 통해 요청을 보내려면 해당 요청을 표시해야 합니다. 이러한 경우 DSM 자체는 동일한 실제 LUN을 나타내야 합니다. 그렇지 않으면 요청이 실패합니다.
- 요청은 의사 LUN으로 구성된 실제 LUN을 이전의 SCSI 주소 또는 해당 MPIO PathId 측면에서 지정해야 하지만 둘 다 지정하지는 않습니다.
주 코드
입력 버퍼
Parameters.DeviceIoControl.InputBufferLength는 Irp-AssociatedIrp.SystemBuffer>의 버퍼 크기를 바이트 단위로 나타냅니다.
입력 버퍼 길이
버퍼는 최소 sizeof(MPIO_PASS_THROUGH_PATH_EX) 또는 64비트 운영 체제의 32비트 애플리케이션에서 보낸 경우 sizeof(MPIO_PASS_THROUGH_PATH32_EX)여야 합니다.
출력 버퍼
포트 드라이버는 Irp-AssociatedIrp.SystemBuffer>에서 디바이스에서 버퍼로 전송되는 모든 요청 감지 데이터와 모든 데이터를 반환합니다.
출력 버퍼 길이
포함된 SCSI_PASS_THROUGH_EX 구조의 SenseInfoLength 및 DataOutTransferLength 멤버는 전송되는 데이터의 양을 나타내도록 업데이트됩니다.
상태 블록
정보 필드는 Irp-AssociatedIrp.SystemBuffer>의 출력 버퍼에 반환된 바이트 수로 설정됩니다. 상태 필드는 STATUS_SUCCESS 설정되거나 포함된 SCSI_PASS_THROUGH_EX 입력 길이 값이 잘못 설정된 경우 STATUS_BUFFER_TOO_SMALL 또는 STATUS_INVALID_PARAMETER 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddscsi.h(Ntddscsi.h 포함) |