다음을 통해 공유


SCSI_PASS_THROUGH_EX 구조체(ntddscsi.h)

SCSI_PASS_THROUGH_EX 구조는 포트 드라이버에 포함된 SCSI 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_SCSI_PASS_THROUGH_EX 요청과 함께 사용됩니다. SCSI_PASS_THROUGH_EX 양방향 데이터 전송 및 가변 길이 명령 데이터 블록을 포함할 수 있습니다.

참고

SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용합니다.

구문

typedef struct _SCSI_PASS_THROUGH_EX {
  ULONG     Version;
  ULONG     Length;
  ULONG     CdbLength;
  ULONG     StorAddressLength;
  UCHAR     ScsiStatus;
  UCHAR     SenseInfoLength;
  UCHAR     DataDirection;
  UCHAR     Reserved;
  ULONG     TimeOutValue;
  ULONG     StorAddressOffset;
  ULONG     SenseInfoOffset;
  ULONG     DataOutTransferLength;
  ULONG     DataInTransferLength;
  ULONG_PTR DataOutBufferOffset;
  ULONG_PTR DataInBufferOffset;
  UCHAR     Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;

멤버

Version

이 구조체의 버전입니다. 0으로 설정합니다.

Length

이 구조체의 크기(바이트)입니다. sizeof(SCSI_PASS_THROUGH_EX)로 설정합니다.

CdbLength

CDb의 SCSI 명령 설명자 블록 크기(바이트)입니다.

StorAddressLength

이 구조체 뒤의 StorAddressOffset 오프셋에 있는 스토리지 디바이스 주소 구조체의 길이(바이트)입니다.

ScsiStatus

HBA 또는 대상 디바이스에서 반환된 SCSI 상태 보고합니다.

SenseInfoLength

요청 감지 버퍼의 크기(바이트)입니다. 이 멤버는 선택 사항이며 0으로 설정할 수 있습니다.

DataDirection

SCSI 명령이 데이터를 읽거나 쓸지 여부를 나타냅니다. 이 필드는 다음 값 중 하나여야 합니다.

의미
SCSI_IOCTL_DATA_OUT 디바이스에 데이터를 씁니다.
SCSI_IOCTL_DATA_IN 디바이스에서 데이터를 읽습니다.
SCSI_IOCTL_DATA_UNSPECIFIED 전송되는 데이터가 없습니다.
SCSI_IOCTL_DATA_BIDIRECTIONAL 데이터는 입력 및 출력 모두에 유효합니다.

Reserved

예약되어 있습니다. 0으로 설정합니다.

TimeOutValue

포트 드라이버에서 시간 초과를 고려하기 전에 요청을 실행할 수 있는 간격(초)을 나타냅니다.

StorAddressOffset

이 구조체의 시작부터 대상 스토리지 디바이스 주소 구조체의 위치(바이트)입니다.

SenseInfoOffset

이 구조체의 시작 부분에서 요청 감지 버퍼로 오프셋됩니다. 요청 감지 버퍼가 없으면 0으로 설정합니다.

DataOutTransferLength

출력 데이터 버퍼의 크기(바이트)를 나타냅니다. 많은 디바이스가 미리 정의된 길이의 데이터 청크를 전송합니다. DataOutTransferLength의 값은 디바이스에서 지정한 미리 정의된 최소 길이의 정수 배수여야 합니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다. 출력 데이터 버퍼가 없으면 이 멤버는 0으로 설정됩니다.

DataInTransferLength

입력 데이터 버퍼의 크기(바이트)를 나타냅니다. 많은 디바이스가 미리 정의된 길이의 데이터 청크를 전송합니다. DataInTransferLength의 값은 디바이스에서 지정한 미리 정의된 최소 길이의 정수 배수여야 합니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다. 입력 데이터 버퍼가 없으면 이 멤버는 0으로 설정됩니다.

DataOutBufferOffset

이 구조체의 시작부터 출력 데이터 버퍼까지의 오프셋을 포함합니다. 오프셋은 디바이스의 데이터 정렬 요구 사항을 준수해야 합니다.

DataInBufferOffset

이 구조체의 시작 부분에서 입력 데이터 버퍼로의 오프셋을 포함합니다. 오프셋은 디바이스의 데이터 정렬 요구 사항을 준수해야 합니다.

Cdb[ANYSIZE_ARRAY]

대상 디바이스로 보낼 SCSI 명령 설명자 블록을 지정합니다.

설명

SCSI_PASS_THROUGH_EX 구조는 버퍼링된 디바이스 제어 요청인 IOCTL_SCSI_PASS_THROUGH_EX 제어 코드와 함께 사용됩니다. 시스템 메모리에서 버퍼링을 무시하려면 호출자는 IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 사용해야 합니다. IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 요청을 처리할 때 시스템은 사용자 메모리의 버퍼를 잠그고 디바이스는 이 메모리에 직접 액세스합니다.

참고

64비트 버전의 Windows에서 실행되는 드라이버는 32비트 프로세스에서 IOCTL_SCSI_PASS_THROUGH_EX 요청을 처리할 때 SCSI_PASS_THROUGH32_EX 구조를 요청 데이터 형식으로 사용해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
머리글 ntddscsi.h(Ntddscsi.h 포함)

추가 정보

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH