ATA 포트 드라이버 지원 루틴
이 페이지는 시스템에서 제공하는 ATA 포트 드라이버에서 제공하는 지원 루틴을 분류합니다.
ATA 드라이버 미니포트 루틴 목록은 ATA 미니포트 드라이버를 참조하세요.
초기화 루틴
ATA 포트 드라이버는 다음과 같은 초기화 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortInitializeEx | 포트 및 미니포트 드라이버를 초기화합니다. |
PCI 구성 공간 액세스에 대한 루틴
ATA 포트 드라이버는 디바이스의 PCI 구성 공간 내용을 읽고 수정하는 데 도움이 되는 다음 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortGetBusData | 디바이스의 PCI 구성 공간 내의 지정된 위치에서 데이터를 검색합니다. |
| AtaPortSetBusData | 는 지정된 오프셋에 표시된 디바이스의 PCI 구성 공간에 데이터를 저장합니다. |
I/O 요청을 처리하기 위한 루틴
ATA 포트 드라이버는 다음과 같은 I/O 요청 처리 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortGetScatterGatherList | 이 요청과 연결된 분산/수집 목록을 검색합니다. |
| AtaPortGetPhysicalAddress | 가상 주소 범위를 실제 주소 범위로 변환합니다. |
| AtaPortGetDeviceBase | HBA(호스트 버스 어댑터)와 통신하는 데 사용되는 매핑된 논리 기본 주소를 반환합니다. |
| AtaPortGetUncachedExtension | CPU 및 디바이스에서 공유하는 캐시되지 않은 일반 버퍼를 할당합니다. |
| AtaPortBuildRequestSenseIrb | 작업 코드 SCSIOP_REQUEST_SENSE 대한 IRB를 빌드하고 반환합니다. |
| AtaPortReleaseRequestSenseIrb | AtaPortBuildRequestSenseIrb를 사용하여 할당된 요청 센스 IRB를 해제합니다. |
| AtaPortCompleteAllActiveRequests | 표시된 디바이스에 대한 모든 활성 IRB를 완료합니다. |
| AtaPortCompleteRequest | 표시된 IRB를 완료합니다. |
콜백 루틴
미니포트 드라이버는 여러 루틴을 사용하여 포트 드라이버에서 콜백을 요청합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortRequestWorkerRoutine | 작업자 루틴을 요청합니다. |
| AtaPortRequestSynchronizedRoutine | ISR(인터럽트 서비스 루틴)과의 동기화를 요청합니다. |
| AtaPortControllerSyncRoutine | 컨트롤러의 모든 채널에서 공유되는 데이터 구조에 대한 동기화된 액세스를 제공합니다. |
| AtaPortRequestTimer | 타이머 콜백을 요청합니다. |
구성 변경을 보고하는 루틴
다음 루틴을 사용하면 미니포트 드라이버가 채널에 연결된 디바이스의 구성에 대한 변경 내용을 ATA 포트 드라이버에 알릴 수 있습니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortBusChangeDetected | 포트 드라이버에 표시된 채널의 디바이스 구성 변경 내용을 알 수 있습니다. |
| AtaPortRequestPowerStateChange | 표시된 디바이스에 대한 전원 상태 전환을 요청합니다. |
요청 큐를 제어하는 루틴
포트 드라이버는 LUN(논리 단위 번호) 요청 큐당 하나씩, 각 채널에 대해 하나의 요청 큐를 유지 관리합니다. 미니포트 드라이버는 다음 루틴을 사용하여 다른 요청 큐를 일시 중지하고 다시 시작할 수 있습니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortDeviceBusy | 표시된 디바이스가 사용 중임을 포트 드라이버에 알릴 수 있습니다. |
| AtaPortDeviceReady | 지정된 디바이스가 새 요청을 수락할 준비가 되었음을 포트 드라이버에 알릴 수 있습니다. |
유틸리티 루틴
다음 루틴은 미니포트 드라이버에 대한 일반 유틸리티 지원 함수입니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortCopyMemory | 한 위치에서 다른 위치로 데이터를 복사합니다. |
| **AtaPortMoveMemory 루틴 | 한 위치에서 다른 위치로 데이터를 복사합니다. |
| AtaPortConvertUlongToPhysicalAddress | 지정된 ULONG 주소를 IDE_PHYSICAL_ADDRESS 형식의 값으로 변환합니다. |
| AtaPortConvertPhysicalAddressToUlong | ULONG에 IDE_PHYSICAL_ADDRESS 형식의 주소를 자립니다. |
| AtaPortStallExecution | 미니포트 드라이버의 노점. |
| AtaPortInitializeQueueTag | 지정된 디바이스에 대한 큐 태그 목록을 초기화합니다. |
| AtaPortAllocateQueueTag | 지정된 디바이스에 대한 큐 태그를 반환합니다. |
| AtaPortReleaseQueueTag | 지정된 큐 태그를 해제합니다. |
디버그 및 오류 보고 루틴
디버그 및 오류 보고에 다음 루틴을 사용할 수 있습니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| AtaPortDebugPrint | 디버거가 인쇄할 커널 디버거에 메시지 문자열을 전달합니다. |
디바이스 포트 및 등록 액세스에 대한 루틴
ATA 포트 드라이버는 다음 포트를 제공하고 액세스 지원 루틴을 등록합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| 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 | 지정된 수의 USHORT 값을 버퍼에서 HBA로 전송합니다. |
| AtaPortWriteRegisterUchar | 부호 없는 바이트를 HBA 주소로 전송합니다. |
| AtaPortWriteRegisterUlong | ULONG 값을 HBA 주소로 전송합니다. |
| AtaPortWriteRegisterUshort | USHORT 값을 HBA 주소로 전송합니다. |
레지스트리 액세스에 대한 루틴
채널 인터페이스를 구현하는 미니포트 드라이버는 다음 루틴을 호출하여 Windows 레지스트리에 액세스할 수 있습니다. 컨트롤러 인터페이스 루틴만 구현하는 미니포트 드라이버는 이러한 루틴에 액세스할 수 없습니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| 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은 채널의 수입니다. |