Storport 드라이버 지원 루틴

이 페이지는 시스템 제공 Storport 드라이버가 미니포트에 제공하는 일부 지원 루틴을 분류합니다. 전체 목록은 storport.h를 참조하세요.

Storport 드라이버 미니포트 루틴 목록은 Storport Miniport 드라이버 루틴을 참조 하세요.

직접 메모리 액세스 지원 루틴

Storport 드라이버는 다음과 같은 DMA(직접 메모리 액세스) 지원 루틴을 제공합니다.

루틴에서 반환된 값 설명
StorPortBuildScatterGatherList 지정된 데이터 버퍼에 대한 분산/수집 목록을 만듭니다.
StorPortGetScatterGatherList 지정된 SRB(SCSI 요청 블록)에 대한 연결된 분산/수집 목록을 검색합니다.
StorPortPutScatterGatherList StorPortBuildScatterGatherList 루틴을 호출하여 이전에 만든 분산/수집 목록과 연결된 모든 리소스를 해제합니다.

일반 지원 루틴

Storport는 다음과 같은 일반적인 지원 루틴을 제공합니다.

루틴에서 반환된 값 설명
StorPortDebugPrint 디버거가 연결된 경우 디버그 문자열을 커널 디버거에 출력합니다.
StorPortEtwEvent2 ETW(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 관리형 연결 목록의 맨 앞에 항목을 삽입합니다. 목록에 대한 액세스는 다중 프로세서 시스템에서 동기화됩니다.
StorPortInvokeAcpiMethod 스토리지 디바이스에 대한 ACPI 메서드를 실행합니다.
StorPortIsCurrentOsInstallationUpgrade Windows의 현재 설치가 이전 버전에서 업그레이드되었는지 여부를 확인합니다.
StorPortIsDeviceOperationAllowed 미니포트에서 특정 디바이스 관리 클래스에 대한 작업이 허용되는지 여부를 확인할 수 있습니다.
StorPortLogError 포트 드라이버에 오류가 발생했음을 알 수 있습니다.
StorPortLogTelemetry 미니포트 원격 분석 이벤트를 기록하여 유용한 정보를 진단하거나 수집하는 데 도움이 됩니다.
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 미니포트 초기화 중에 미니포트의 HwStorPassiveInitializeRoutine 콜백 루틴을 PASSIVE_LEVEL 실행할 수 있도록 합니다.
StorPortGetActiveGroupCount 시스템에 있는 프로세서 그룹의 수를 반환합니다.
StorPortGetActiveNodeCount 시스템에 있는 노드 수를 반환합니다.
StorPortGetBusData HBA를 초기화하는 데 필요한 버스별 구성 정보를 검색합니다.
StorPortGetCurrentProcessorNumber 커널에서 현재 프로세서 번호를 검색합니다.
StorPortGetGroupAffinity 요청된 그룹에서 활성 프로세서의 마스크를 생성합니다.
StorPortGetHighestNodeNumber 시스템에서 가능한 가장 큰 노드 번호를 반환합니다.
StorPortGetLogicalProcessorRelationship 하나 이상의 지정된 형식에 대한 관계 정보를 반환합니다. 이러한 형식에는 호스트 시스템의 그룹, 물리적 패키지 및 노드가 포함됩니다. 반환되는 정보에는 호스트 시스템의 논리 프로세서로 구성된 프로세서 선호도 마스크가 포함됩니다. 이러한 논리 프로세서는 지정된 관계 유형을 공유합니다.
StorPortGetLogicalUnit 미니포트 드라이버의 논리 단위별 스토리지 영역에 대한 포인터를 반환합니다.
StorPortGetNodeAffinity 요청된 NUMA(Nonuniform memory access) 노드에서 활성 프로세서의 마스크를 생성합니다.
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 지정된 수의 USHORT 값을 버퍼에서 HBA로 전송합니다.
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 타이머 컨텍스트 개체에 대한 콜백 이벤트를 예약합니다.