Storport 드라이버 지원 루틴
이 페이지는 시스템 제공 Storport 드라이버가 미니포트에 제공하는 지원 루틴 중 일부를 분류합니다. 전체 목록은 storport.h 를 참조하세요.
Storport 드라이버 미니포트 루틴 목록은 Storport 미니포트 드라이버 루틴을 참조하세요.
직접 메모리 액세스 지원 루틴
Storport 드라이버는 다음과 같은 DMA(직접 메모리 액세스) 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortBuildScatterGatherList | 지정된 데이터 버퍼에 대한 분산/수집 목록을 만듭니다. |
| StorPortGetScatterGatherList | 지정된 SRB(SCSI 요청 블록)에 대한 연결된 분산/수집 목록을 검색합니다. |
| StorPortPutScatterGatherList | StorPortBuildScatterGatherList 루틴을 호출하여 이전에 만든 분산/수집 목록과 연결된 모든 리소스를 해제합니다. |
일반 지원 루틴
Storport는 다음과 같은 일반적인 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortDebugPrint | 디버거가 연결된 경우 커널 디버거에 디버그 문자열을 출력합니다. |
| StorPortEtwEvent2 | ETW(event Tracing for Windows) 이벤트를 스토리지 추적 채널에 게시합니다. 미니포트는 두 개의 범용 ETW 매개 변수를 기록할 수 있습니다. ETW 매개 변수는 두 개의 이름-값 쌍으로 표현됩니다. |
| StorPortEtwEvent4 | ETW 이벤트를 스토리지 추적 채널에 게시합니다. 미니포트는 네 개의 범용 ETW 매개 변수를 기록할 수 있습니다. ETW 매개 변수는 네 개의 이름-값 쌍으로 표현됩니다. |
| StorPortEtwEvent8 | ETW 이벤트를 스토리지 추적 채널에 게시합니다. 미니포트는 8개의 범용 ETW 매개 변수를 기록할 수 있습니다. ETW 매개 변수는 8개의 이름-값 쌍으로 표현됩니다. |
| StorPortGetActivityIdSrb | 요청 블록과 연결된 ETW 활동 ID를 검색합니다. |
| StorPortGetDeviceObjects | 어댑터 디바이스 스택과 연결된 디바이스 개체를 반환합니다. 반환될 디바이스 개체는 어댑터의 기능 및 물리적 디바이스 개체와 기능 디바이스 개체가 연결된 디바이스 개체입니다. |
| StorPortGetSystemPortNumber | 스토리지 어댑터에 대한 시스템 할당 포트 번호를 검색합니다. |
| StorPortInitializeSListHead | Storport 관리형 Singly 연결된 목록의 헤드를 초기화합니다. |
| StorPortInterlockedFlushSList | Storport 관리형 Singly 연결된 목록에서 모든 항목을 제거합니다. 목록에 대한 액세스는 다중 프로세서 시스템에서 동기화됩니다. |
| StorPortInterlockedPopEntrySList | Storport 관리형 Singly 연결된 목록의 맨 앞에서 항목을 제거합니다. 목록에 대한 액세스는 다중 프로세서 시스템에서 동기화됩니다. |
| StorPortInterlockedPushEntrySList | Storport 관리형 Singly 연결된 목록의 맨 앞에 항목을 삽입합니다. 목록에 대한 액세스는 다중 프로세서 시스템에서 동기화됩니다. |
| StorPortInvokeAcpiMethod | 스토리지 디바이스에 대한 ACPI 메서드를 실행합니다. |
| StorPortIsCurrentOsInstallationUpgrade | Windows 현재 설치가 이전 버전에서 업그레이드되었는지 여부를 확인합니다. |
| StorPortIsDeviceOperationAllowed | 미니포트에서 특정 디바이스 관리 클래스에 대한 작업이 허용되는지 여부를 확인할 수 있습니다. |
| StorPortLogError | 포트 드라이버에 오류가 발생했음을 알 수 있습니다. |
| StorPortLogSystemEvent | 미니포트 드라이버는 Windows 커널 이벤트 시설의 기능에 대한 모든 권한을 부여하여 미니포트 드라이버가 스토리지 문제를 해결하는 데 정말 유용한 이벤트 로그 항목을 만들 수 있도록 합니다. StorPortLogError에 대한 더 나은 대안을 제공합니다. |
| StorPortQueryDepthSList | Storport 관리형 Singly 연결된 목록의 항목 수를 검색합니다. |
| StorPortQueryPerformanceCounter | 현재 시스템 성능 카운터 값을 쿼리하고 반환합니다. |
| StorPortQuerySystemTime | 현재 시스템 시간을 가져옵니다. |
| StorPortRegistryRead | 표시된 디바이스 및 값에 대한 레지스트리 데이터를 읽습니다. |
| StorPortRegistryReadAdapterKey | HKLM/CurrentControlSet/Enum</Instance path>/DeviceParameters/...의 레지스트리에 있는 하드웨어 또는 디바이스 레지스트리 어댑터 키를 읽습니다. |
| StorPortRegistryWriteAdapterKey | HKLM/CurrentControlSet/Enum</Instance path>/DeviceParameters/...의 레지스트리에 있는 하드웨어 또는 디바이스 레지스트리 어댑터 키를 씁니다. |
| StorPortRegistryWrite | 지정된 버퍼에 포함된 레지스트리 데이터를 ASCII에서 유니코드로 변환한 다음, 미니포트 드라이버의 HBA 스토리지 영역에 데이터를 씁니다. |
I/O 요청 처리 지원 루틴
Storport는 다음과 같은 I/O 요청 처리 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortBusy | 어댑터가 현재 사용 중임을 포트 드라이버에 알리고 미해결 요청을 처리합니다. |
| StorPortCompleteRequest | SRB 상태 값을 SrbStatus로 설정하는 모든 미해결 요청을 완료합니다. |
| StorPortCompleteServiceIrp | Storport 가상 미니포트 드라이버가 HwStorProcessServiceRequest 콜백 루틴에서 받은 요청을 완료해야 할 때 호출됩니다. |
| StorPortDeviceBusy | 지정된 논리 단위가 현재 사용 중임을 포트 드라이버에 알리고 처리 중인 요청을 처리합니다. |
| StorPortDeviceReady | 지정된 논리 단위가 새 요청을 처리할 준비가 되었음을 포트 드라이버에 알합니다. |
| StorPortFreeWorker | StorPortInitializeWorker 루틴에서 이전에 할당한 Storport 작업 항목을 해제합니다. |
| StorPortGetRequestInfo | SRB(SCSI 요청 블록)와 연결된 IO 요청 정보를 검색하고 STOR_REQUEST_INFO 구조로 반환합니다. |
| StorPortInitializeWorker | 시스템 작업자 스레드에서 실행되는 새 Storport 작업 항목을 만듭니다. |
| StorPortQueueWorkItem | Storport 작업 항목이 시스템 작업자 스레드의 컨텍스트 내에서 실행되도록 예약합니다. |
| StorPortPause | 지정된 기간 동안 어댑터를 일시 중지합니다. |
| StorPortPauseDevice | 지정된 기간 동안 특정 논리 단위 디바이스를 일시 중지합니다. |
| StorPortReady | 어댑터가 더 이상 사용 중이 아님을 포트 드라이버에 알 수 있습니다. |
| StorPortResume | 일시 중지된 어댑터를 다시 시작합니다. |
| StorPortResumeDevice | 이전에 일시 중지된 논리 단위를 다시 시작합니다. |
초기화 지원 루틴
Storport 드라이버는 다음과 같은 초기화 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortEnablePassiveInitialization | 미니포트 초기화 중 PASSIVE_LEVEL 미니포트의 HwStorPassiveInitializeRoutine 콜백 루틴을 실행할 수 있도록 합니다. |
| StorPortGetActiveGroupCount | 시스템에 있는 프로세서 그룹의 수를 반환합니다. |
| StorPortGetActiveNodeCount | 시스템에 있는 노드 수를 반환합니다. |
| StorPortGetBusData | HBA를 초기화하는 데 필요한 버스 관련 구성 정보를 검색합니다. |
| StorPortGetCurrentProcessorNumber | 커널에서 현재 프로세서 번호를 검색합니다. |
| StorPortGetGroupAffinity | 요청된 그룹에서 활성 프로세서의 마스크를 생성합니다. |
| StorPortGetHighestNodeNumber | 시스템에서 가능한 가장 큰 노드 번호를 반환합니다. |
| StorPortGetLogicalProcessorRelationship | 하나 이상의 지정된 형식에 대한 관계 정보를 반환합니다. 이러한 형식에는 호스트 시스템의 그룹, 물리적 패키지 및 노드가 포함됩니다. 반환되는 정보에는 호스트 시스템의 논리 프로세서로 구성된 프로세서 선호도 마스크가 포함됩니다. 이러한 논리 프로세서는 지정된 관계 유형을 공유합니다. |
| StorPortGetLogicalUnit | 미니포트 드라이버의 논리 단위별 스토리지 영역에 대한 포인터를 반환합니다. |
| StorPortGetNodeAffinity | 요청된 NUMA(비일관 메모리 액세스) 노드에서 활성 프로세서의 마스크를 생성합니다. |
| StorPortGetStartIoPerfParams | 지정된 I/O 요청에 대한 성능 매개 변수를 STARTIO_PERFORMANCE_PARAMETERS 구조에 배치합니다. |
| StorPortInitialize | 포트 드라이버 매개 변수 및 확장 데이터를 초기화합니다. StorPortInitilize 는 미니포트 드라이버에서 제공된 어댑터 정보도 저장합니다. |
| StorPortInitializePerfOpts | 미니포트 드라이버와 Storport 드라이버가 모두 PERF_CONFIGURATION_DATA 구조를 사용하여 지원하는 성능 최적화를 초기화합니다. |
| StorPortSetAdapterBusType | 현재 구성에 따라 어댑터의 BusType을 조정하는 데 사용됩니다. 이 루틴을 사용하여 BusType을 설정하면 드라이버를 다시 설치하지 않고도 미니포트 INF에 설정된 전역 속성을 재정의할 수 있습니다. 이는 RAID 지원 또는 버스 유형이 다른 여러 어댑터에 대한 지원과 같은 시나리오에 유용합니다. |
| StorPortSetBusDataByOffset | 버스 관련 구성 정보를 씁니다. |
| StorPortSetDeviceQueueDepth | 표시된 디바이스에 대한 디바이스 큐의 최대 깊이를 설정합니다. |
| StorPortSetPowerSettingNotificationGuids | 미니포트가 전원 설정 알림을 받을 수 있도록 합니다. 미니포트는 전원 변경 알림을 받을 전원 설정을 식별하는 GUID 배열을 등록합니다. |
| StorPortSetUnitAttributes | 스토리지 장치 디바이스의 전원 특성을 Storport 드라이버에 등록합니다. |
인터럽트 지원 루틴
Storport 드라이버는 다음과 같은 인터럽트 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortGetMSIInfo | 지정된 메시지에 대한 MSI(메시지 신호 인터럽트) 정보를 검색합니다. |
| StorPortSynchronizeAccess | 미니포트 드라이버의 디바이스 확장에 대한 동기화된 액세스를 제공합니다. |
| StorPortInitializeDpc | StorPort DPC(지연 프로시저 호출)를 초기화합니다. |
| StorPortIssueDpc | Storport DPC를 발급합니다. |
| StorPortStallExecution | 미니포트 드라이버를 중단합니다. |
지원 루틴 잠금
Storport 드라이버는 다음과 같은 잠금 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortAcquireMSISpinLock | 지정된 메시지와 연결된 MSI(메시지 신호 인터럽트) 스핀 잠금을 가져옵니다. |
| StorPortAcquireSpinLock | 지정된 스핀 잠금을 획득합니다. |
| StorPortReleaseMSISpinLock | 지정된 메시지에 대해 이전에 획득한 MSI 스핀 잠금을 해제합니다. |
| StorPortReleaseSpinLock | StorPortAcquireSpinLock에서 획득한 스핀 잠금을 해제합니다. |
메모리 관리 지원 루틴
Storport 드라이버는 다음과 같은 메모리 관리 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortAllocateContiguousMemorySpecifyCacheNode | 물리적으로 연속되지 않은 비캐싱되지 않은 메모리의 범위를 할당합니다. |
| StorPortAllocateMdl | 지정된 페이징이 아닌 풀 메모리를 설명하기 위해 MDL을 할당합니다. |
| StorPortAllocatePool | 인접하지 않은 페이징이 아닌 풀 메모리 블록을 할당합니다. |
| StorPortAllocateRegistryBuffer | 미니포트가 레지스트리 데이터를 읽고 쓰는 데 사용할 수 있는 버퍼를 할당합니다. |
| StorPortBuildMdlForNonPagedPool | 연결된 페이징되지 않은 메모리를 설명하도록 MDL을 업데이트합니다. |
| StorPortConvertUlongToPhysicalAddress | 서명되지 않은 긴 주소를 실제 주소로 변환합니다. |
| StorPortConvertPhysicalAddressToULong64 | 물리적 주소를 ULONG64 값으로 변환합니다. |
| StorPortFreeMdl | 페이징되지 않은 풀 메모리를 설명하는 MDL(메모리 설명자 목록)을 해제합니다. |
| StorPortFreeContiguousMemorySpecifyCache | 시스템 주소 공간의 페이징되지 않은 부분에서 캐시되지 않은 메모리 범위를 할당 취소합니다. |
| StorPortFreePool | StorPortAllocatePool 루틴을 호출하여 이전에 할당된 메모리 블록을 해제합니다. |
| StorPortFreeRegistryBuffer | 레지스트리 데이터를 저장하기 위해 할당된 버퍼를 해제합니다. |
| StorPortGetDataInBufferMdl | SRB(SCSI 요청 블록)의 입력 데이터 버퍼와 연결된 MDL을 반환합니다. |
| StorPortGetDataInBufferScatterGatherList | SRB(SCSI 요청 블록)의 입력 데이터 버퍼와 연결된 분산형 수집 목록을 반환합니다. |
| StorPortGetDataInBufferSystemAddress | SRB(SCSI 요청 블록)의 입력 데이터 버퍼에 대한 시스템 주소를 반환합니다. |
| StorPortGetOriginalMdl | 지정된 SRB와 연결된 MDL을 반환합니다. |
| StorPortGetVirtualAddress | 표시된 실제 주소에 매핑되는 가상 주소를 가져옵니다. |
| StorPortGetPhysicalAddress | 지정된 가상 주소 범위를 DMA 작업의 실제 주소 범위로 변환합니다. |
| StorPortGetSystemAddress | 지정된 SRB(SCSI 요청 블록)의 데이터 버퍼에 대한 시스템 공간의 가상 주소를 반환합니다. |
| StorPortGetUncachedExtension | CPU 및 디바이스에서 공유할 캐시되지 않은 일반 버퍼를 할당합니다. |
| StorPortMarkDumpMemory | 미니포트는 덤프 파일 또는 최대 절전 모드 파일에 사용되는 메모리를 표시해야 합니다. 표시된 메모리는 유지되며 최대 절전 모드 작업에서 다시 시작 후 유효한 상태로 유지됩니다. 표시할 메모리는 StorPortMarkDumpMemory 호출의 주소 및 범위 길이로 지정됩니다. |
| StorPortMoveMemory | 한 버퍼에서 다른 버퍼로 메모리를 복사합니다. |
알림 지원 루틴
Storport 드라이버는 다음과 같은 알림 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortAsyncNotificationDetected | Storport 드라이버에 스토리지 디바이스 상태 변경 이벤트를 알 수 있습니다. |
| StorPortNotification | Storport 드라이버에 특정 이벤트 및 조건을 알 수 있습니다. |
| StorPortStateChangeDetected | LUN(논리 단위 번호), HBA(호스트 버스 어댑터) 포트 또는 대상 디바이스에 대한 상태 변경에 대해 Storport 포트 드라이버에 알합니다. |
I/O 지원 루틴 포트 및 등록
Storport 드라이버는 다음 포트를 제공하고 I/O 지원 루틴을 등록합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortGetDeviceBase | I/O 주소를 시스템 주소 공간에 지도. |
| StorPortFreeDeviceBase | StorPortGetDeviceBase에 의해 매핑된 디바이스 I/O 메모리 범위를 해제합니다. |
| StorPortReadPortBufferUchar | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadPortBufferUlong | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadPortBufferUshort | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadPortUchar | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadPortUlong | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadPortUshort | 지정된 포트 주소에서 값을 읽습니다. |
| StorPortReadRegisterBufferUchar | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortReadRegisterBufferUlong | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortReadRegisterBufferUlong64 | 지정된 64비트 레지스터 주소에서 여러 ULONG64 값을 버퍼로 읽습니다. |
| StorPortReadRegisterBufferUshort | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortReadRegisterUchar | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortReadRegisterUlong | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortReadRegisterUlong64 | 지정된 64비트 레지스터 주소에서 64비트 값을 읽습니다. |
| StorPortReadRegisterUshort | 지정된 레지스터 주소에서 값을 읽습니다. |
| StorPortValidateRange | 지정된 I/O 주소 범위가 다른 어댑터에서 사용 중인지 여부를 확인합니다. 이 루틴은 Windows NT 4.0 이상 운영 체제에서 사용되지 않습니다. |
| StorPortWritePortBufferUchar | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWritePortBufferUlong | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWritePortBufferUshort | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWritePortUchar | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWritePortUlong | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWritePortUshort | 지정된 레지스터 주소에 값을 씁니다. |
| StorPortWriteRegisterBufferUchar | 지정된 수의 부호 없는 바이트를 버퍼에서 HBA로 전송합니다. |
| StorPortWriteRegisterBufferUlong | 버퍼에서 HBA로 지정된 수의 ULONG 값을 전송합니다. |
| StorPortWriteRegisterBufferUlong64 | 지정된 64비트 레지스터 주소에서 여러 ULONG64 값을 씁니다. |
| StorPortWriteRegisterBufferUshort | 버퍼에서 HBA로 지정된 수의 USHORT 값을 전송합니다. |
| StorPortWriteRegisterUchar | 버퍼에서 지정된 HBA 레지스터 주소로 지정된 수의 문자 값을 전송합니다. |
| StorPortWriteRegisterUlong | ULONG 값을 표시된 HBA 레지스터 주소로 전송합니다. |
| StorPortWriteRegisterUlong64 | 지정된 레지스터 주소에 ULONG64 값을 씁니다. |
| StorPortWriteRegisterUshort | ULONG 값을 표시된 HBA 레지스터 주소로 전송합니다. |
런타임 전원 관리 지원 루틴
Storport 드라이버는 다음과 같은 런타임 전원 관리 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortInitializePoFxPower | 스토리지 디바이스를 PoFx(전원 관리 프레임워크)에 등록합니다. |
| StorPortPoFxActivateComponent | 스토리지 디바이스의 지정된 구성 요소에 대한 활성화 참조 수를 증분합니다. |
| StorPortPoFxIdleComponent | 스토리지 디바이스의 지정된 구성 요소에 대한 활성화 참조 수를 감소합니다. |
| StorPortPoFxPowerControl | 전원 제어 요청을 PoFx(전원 관리 프레임워크)에 전송하여 PEP(전원 엔진 플러그 인)로 전달합니다. |
| StorPortPoFxSetComponentLatency | 유휴 상태에서 지정된 스토리지 디바이스 구성 요소의 활성 상태로 전환할 때 허용할 수 있는 최대 대기 시간을 지정합니다. |
| StorPortPoFxSetComponentResidency | 구성 요소가 유휴 상태로 전환된 후 스토리지 디바이스 구성 요소가 유휴 상태로 유지될 수 있는 예상 시간을 설정합니다. |
타이머 지원 루틴
Storport 드라이버는 다음과 같은 타이머 지원 루틴을 제공합니다.
| 루틴에서 반환된 값 | 설명 |
|---|---|
| StorPortFreeTimer | StorPortInitializeTimer 루틴에서 이전에 만든 Storport 타이머 컨텍스트 개체를 해제합니다. |
| StorPortInitializeTimer | Storport 타이머 컨텍스트 개체를 만듭니다. |
| StorPortRequestTimer | Storport 타이머 컨텍스트 개체에 대한 콜백 이벤트를 예약합니다. |