다음을 통해 공유


ATA 포트 드라이버 지원 루틴

이 페이지는 시스템에서 제공하는 ATA 포트 드라이버에서 제공하는 지원 루틴을 분류합니다.

ATA 드라이버 미니포트 루틴 목록은 ATA 미니포트 드라이버를 참조하세요.

초기화 루틴

ATA 포트 드라이버는 다음과 같은 초기화 루틴을 제공합니다.

루틴에서 반환된 값 Description
AtaPortInitializeEx 포트 및 미니포트 드라이버를 초기화합니다.

PCI 구성 공간 액세스에 대한 루틴

ATA 포트 드라이버는 디바이스의 PCI 구성 공간 내용을 읽고 수정하는 데 도움이 되는 다음 루틴을 제공합니다.

루틴에서 반환된 값 Description
AtaPortGetBusData 디바이스의 PCI 구성 공간 내의 지정된 위치에서 데이터를 검색합니다.
AtaPortSetBusData 는 지정된 오프셋에 표시된 디바이스의 PCI 구성 공간에 데이터를 저장합니다.

I/O 요청을 처리하기 위한 루틴

ATA 포트 드라이버는 다음과 같은 I/O 요청 처리 지원 루틴을 제공합니다.

루틴에서 반환된 값 Description
AtaPortGetScatterGatherList 이 요청과 연결된 분산/수집 목록을 검색합니다.
AtaPortGetPhysicalAddress 가상 주소 범위를 실제 주소 범위로 변환합니다.
AtaPortGetDeviceBase HBA(호스트 버스 어댑터)와 통신하는 데 사용되는 매핑된 논리 기본 주소를 반환합니다.
AtaPortGetUncachedExtension CPU 및 디바이스에서 공유하는 캐시되지 않은 공통 버퍼를 할당합니다.
AtaPortBuildRequestSenseIrb 작업 코드 SCSIOP_REQUEST_SENSE 대한 IRB를 빌드하고 반환합니다.
AtaPortReleaseRequestSenseIrb AtaPortBuildRequestSenseIrb을 사용하여 할당된 요청 센스 IRB를 해제합니다.
AtaPortCompleteAllActiveRequests 표시된 디바이스에 대한 모든 활성 IRB를 완료합니다.
AtaPortCompleteRequest 표시된 IRB를 완료합니다.

콜백 루틴

미니포트 드라이버는 여러 루틴을 사용하여 포트 드라이버에서 콜백을 요청합니다.

루틴에서 반환된 값 Description
AtaPortRequestWorkerRoutine 작업자 루틴을 요청합니다.
AtaPortRequestSynchronizedRoutine ISR(인터럽트 서비스 루틴)과의 동기화를 요청합니다.
AtaPortControllerSyncRoutine 컨트롤러의 모든 채널에서 공유되는 데이터 구조에 대한 동기화된 액세스를 제공합니다.
AtaPortRequestTimer 타이머 콜백을 요청합니다.

구성 변경을 보고하는 루틴

다음 루틴을 사용하면 미니포트 드라이버가 채널에 연결된 디바이스의 구성에 대한 변경 내용을 ATA 포트 드라이버에 알릴 수 있습니다.

루틴에서 반환된 값 Description
AtaPortBusChangeDetected 포트 드라이버에 표시된 채널의 디바이스 구성 변경 내용을 알 수 있습니다.
AtaPortRequestPowerStateChange 표시된 디바이스에 대한 전원 상태 전환을 요청합니다.

요청 큐를 제어하는 루틴

포트 드라이버는 LUN(논리 단위 번호) 요청 큐당 하나씩, 각 채널에 대해 하나의 요청 큐를 유지 관리합니다. 미니포트 드라이버는 다음 루틴을 사용하여 다른 요청 큐를 일시 중지하고 다시 시작할 수 있습니다.

루틴에서 반환된 값 Description
AtaPortDeviceBusy 표시된 디바이스가 사용 중임을 포트 드라이버에 알릴 수 있습니다.
AtaPortDeviceReady 표시된 디바이스가 새 요청을 수락할 준비가 되었음을 포트 드라이버에 알릴 수 있습니다.

유틸리티 루틴

다음 루틴은 미니포트 드라이버에 대한 일반 유틸리티 지원 함수입니다.

루틴에서 반환된 값 Description
AtaPortCopyMemory 한 위치에서 다른 위치로 데이터를 복사합니다.
**AtaPortMoveMemory 루틴 한 위치에서 다른 위치로 데이터를 복사합니다.
AtaPortConvertUlongToPhysicalAddress 지정된 ULONG 주소를 IDE_PHYSICAL_ADDRESS 형식의 값으로 변환합니다.
AtaPortConvertPhysicalAddressToUlong ULONG에 IDE_PHYSICAL_ADDRESS 형식의 주소를 자립니다.
AtaPortStallExecution 미니포트 드라이버의 노점.
AtaPortInitializeQueueTag 지정된 디바이스에 대한 큐 태그 목록을 초기화합니다.
AtaPortAllocateQueueTag 지정된 디바이스에 대한 큐 태그를 반환합니다.
AtaPortReleaseQueueTag 지정된 큐 태그를 해제합니다.

디버그 및 오류 보고 루틴

디버그 및 오류 보고에는 다음 루틴을 사용할 수 있습니다.

루틴에서 반환된 값 Description
AtaPortDebugPrint 디버거가 인쇄할 커널 디버거에 메시지 문자열을 전달합니다.

디바이스 포트 및 등록 액세스에 대한 루틴

ATA 포트 드라이버는 다음 포트 및 등록 액세스 지원 루틴을 제공합니다.

루틴에서 반환된 값 Description
AtaPortReadPortBufferUchar 지정된 수의 부호 없는 바이트 값을 HBA에서 버퍼로 전송합니다.
AtaPortReadPortBufferUlong 지정된 수의 ULONG 값을 HBA에서 버퍼로 전송합니다.
AtaPortReadPortBufferUshort 지정된 수의 USHORT 값을 HBA에서 버퍼로 전송합니다.
AtaPortReadPortUchar HBA에서 부호 없는 바이트 값을 읽습니다.
AtaPortReadPortUlong HBA에서 ULONG 값을 읽습니다.
AtaPortReadPortUshort HBA에서 USHORT 값을 읽습니다.
AtaPortReadRegisterBufferUchar 지정된 수의 부호 없는 바이트를 HBA에서 버퍼로 전송합니다.
AtaPortReadRegisterBufferUlong 지정된 수의 ULONG을 HBA에서 버퍼로 전송합니다.
AtaPortReadRegisterBufferUshort 지정된 수의 USHORT를 HBA에서 버퍼로 전송합니다.
AtaPortReadRegisterUchar HBA에서 부호 없는 바이트 값을 읽습니다.
AtaPortReadRegisterUlong HBA에서 ULONG 값을 읽습니다.
AtaPortReadRegisterUshort HBA에서 USHORT 값을 읽습니다.
AtaPortWritePortBufferUchar 지정된 레지스터 주소에 값을 씁니다.
AtaPortWritePortBufferUlong 지정된 레지스터 주소에 값을 씁니다.
AtaPortWritePortBufferUshort 지정된 레지스터 주소에 값을 씁니다.
AtaPortWritePortUchar 서명되지 않은 바이트 값을 HBA로 전송합니다.
AtaPortWritePortUlong ULONG 값을 HBA로 전송합니다.
AtaPortWritePortUshort USHORT 값을 HBA로 전송합니다.
AtaPortWriteRegisterBufferUchar 지정된 수의 부호 없는 바이트를 버퍼에서 HBA로 전송합니다.
AtaPortWriteRegisterBufferUlong 지정된 수의 ULONG 값을 버퍼에서 HBA로 전송합니다.
AtaPortWriteRegisterBufferUshort 버퍼에서 HBA로 지정된 수의 USHORT 값을 전송합니다.
AtaPortWriteRegisterUchar 서명되지 않은 바이트를 HBA 주소로 전송합니다.
AtaPortWriteRegisterUlong ULONG 값을 HBA 주소로 전송합니다.
AtaPortWriteRegisterUshort USHORT 값을 HBA 주소로 전송합니다.

레지스트리 액세스에 대한 루틴

채널 인터페이스를 구현하는 미니포트 드라이버는 다음 루틴을 호출하여 Windows 레지스트리에 액세스할 수 있습니다. 컨트롤러 인터페이스 루틴만 구현하는 미니포트 드라이버는 이러한 루틴에 액세스할 수 없습니다.

루틴에서 반환된 값 Description
AtaPortRegistryAllocateBuffer 레지스트리 작업에 버퍼를 할당합니다.
AtaPortRegistryFreeBuffer AtaPortRegistryAllocateBuffer를 사용하여 할당된 레지스트리 버퍼를 해제합니다.
AtaPortRegistryControllerKeyRead 레지스트리 키 HKLM\CurrentControlSet\Services<\service name\ControllerN에서 표시된 값 이름과> 연결된 데이터를 읽습니다. 여기서 N은 컨트롤러의 수입니다.
AtaPortRegistryContrlollerKeyWrite 레지스트리 키 HKLM\CurrentControlSet\Services<\service name\ControllerN 아래에 표시된 값 이름>에 데이터를 씁니다. 여기서 N은 컨트롤러의 수입니다.
AtaPortRegistryControllerKeyWriteDeferred 레지스트리 키 HKLM\CurrentControlSet\Services<\service name\ControllerN 아래에 표시된 값 이름>에 데이터를 비동기적으로 씁니다. 여기서 N은 컨트롤러의 수입니다.
AtaPortRegistryChannelSubKeyRead 레지스트리 키 HKLM\CurrentControlSet\Services<\service name\ControllerN\ChannelM에서 표시된 값 이름과> 연결된 데이터를 읽습니다. 여기서 N은 컨트롤러의 수이고 M은 채널의 수입니다.
AtaPortRegistryChannelSubKeyWrite 레지스트리 키 HKLM\CurrentControlSet\Services\service name\<ControllerN\ChannelM 아래에 표시된 값 이름>에 데이터를 씁니다. 여기서 N은 컨트롤러의 수이고 M은 채널의 수입니다.
AtaPortRegistryChannelSubKeyWriteDeferred 레지스트리 키 HKLM\CurrentControlSet\Services\service name\ControllerN\<ChannelM 아래에 표시된 값 이름>에 데이터를 비동기적으로 씁니다. 여기서 N은 컨트롤러의 수이고 M은 채널의 수입니다.