다음을 통해 공유


ATA_PASS_THROUGH_DIRECT 구조체(ntddscsi.h)

ATA_PASS_THROUGH_DIRECT 구조는 포트 드라이버에 포함된 ATA 명령을 대상 디바이스로 보내도록 지시하는 IOCTL_ATA_PASS_THROUGH_DIRECT 요청과 함께 사용됩니다.

구문

typedef struct _ATA_PASS_THROUGH_DIRECT {
  USHORT Length;
  USHORT AtaFlags;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  ReservedAsUchar;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  ULONG  ReservedAsUlong;
  PVOID  DataBuffer;
  UCHAR  PreviousTaskFile[8];
  UCHAR  CurrentTaskFile[8];
} ATA_PASS_THROUGH_DIRECT, *PATA_PASS_THROUGH_DIRECT;

멤버

Length

ATA_PASS_THROUGH_DIRECT 구조체의 길이(바이트)를 지정합니다.

AtaFlags

데이터 전송 방향을 나타내고 수행할 작업의 종류를 지정합니다. 이 멤버의 값은 다음 표에 있는 플래그의 일부 조합이어야 합니다.

ATA 플래그 의미
ATA_FLAGS_DRDY_REQUIRED 디바이스에 명령을 보내기 전에 디바이스에서 DRDY 상태 기다립니다.
ATA_FLAGS_DATA_IN 디바이스에서 데이터를 읽습니다.
ATA_FLAGS_DATA_OUT 디바이스에 데이터를 씁니다.
ATA_FLAGS_48BIT_COMMAND 보낼 ATA 명령은 48비트 LBA(논리 블록 주소) 기능 집합을 사용합니다. 이 플래그를 설정하면 ATA_PASS_THROUGH_DIRECT 구조체에 있는 PreviousTaskFile 멤버의 내용이 유효해야 합니다.
ATA_FLAGS_USE_DMA 전송 모드를 DMA로 설정합니다.
ATA_FLAGS_NO_MULTIPLE 단일 섹터만 읽습니다.

PathId

요청에 대한 IDE 포트 또는 버스를 나타내는 정수입니다. 이 값은 포트 드라이버에 의해 설정됩니다.

TargetId

버스의 대상 디바이스를 나타내는 정수 를 포함합니다. 이 값은 포트 드라이버에 의해 설정됩니다.

Lun

디바이스의 논리적 단위 번호를 나타냅니다. 이 값은 포트 드라이버에 의해 설정됩니다.

ReservedAsUchar

다음에 사용하도록 예약됩니다.

DataTransferLength

데이터 버퍼의 크기(바이트)를 나타냅니다. 언더런이 발생하는 경우 미니포트 드라이버는 이 멤버를 실제로 전송된 바이트 수로 업데이트해야 합니다.

TimeOutValue

OS별 포트 드라이버가 요청 시간이 초과되었음을 결정하기 전에 요청이 실행될 수 있는 시간(초)을 나타냅니다.

ReservedAsUlong

다음에 사용하도록 예약됩니다.

DataBuffer

데이터 버퍼에 대한 포인터입니다.

PreviousTaskFile[8]

현재 통과 명령 이전의 입력 작업 파일 레지스터의 내용을 지정합니다. 이 멤버는 ATA_FLAGS_48BIT_COMMAND 플래그가 설정되지 않은 경우 사용되지 않습니다.

CurrentTaskFile[8]

입력 및 출력 모두에서 작업 파일 레지스터의 내용을 지정합니다. 입력에서 CurrentTaskFile 의 배열 값은 다음과 같은 방식으로 입력 레지스터에 매핑됩니다.

Byte 입력 레지스터
0 기능 등록
1 섹터 수 레지스터
2 섹터 번호 레지스터
3 실린더 로우 레지스터
4 원통 높음 레지스터
5 디바이스/헤드 레지스터
6 명령 등록
7 예약됨
 

IOCTL_ATA_PASS_THROUGH_DIRECT 완료되면 포트 드라이버는 포함된 명령이 완료될 때 디바이스의 출력 레지스터에 있는 값으로 CurrentTaskFile을 업데이트합니다. CurrentTaskFile의 배열 값은 다음 작업 파일 출력 레지스터에 해당합니다.

Byte 출력 레지스터
0 오류 등록
1 섹터 수 레지스터
2 섹터 번호 레지스터
3 실린더 로우 레지스터
4 원통 높음 레지스터
5 디바이스/헤드 레지스터
6 상태 등록
7 예약됨

설명

ATA_PASS_THROUGH_DIRECT 구조체는 IOCTL_ATA_PASS_THROUGH_DIRECT 함께 사용됩니다. 이 요청을 통해 시스템은 사용자 메모리의 버퍼를 잠그고 디바이스는 이 메모리에 직접 액세스합니다. 이 디바이스 제어 요청에 해당하는 이중 버퍼링된 항목은 IOCTL_ATA_PASS_THROUGHATA_PASS_THROUGH_EX 참조하세요.

요구 사항

요구 사항
헤더 ntddscsi.h(Ntddscsi.h 포함)

추가 정보

ATA_PASS_THROUGH_EX

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT