StorPortAllocateDmaMemory 함수(storport.h)
이 함수는 StorPortAllocateContiguousMemorySpecifyCacheNode 함수의 확장 버전입니다. 물리적으로 연속된 비캐싱되지 않은 메모리 범위를 할당하고 할당된 버퍼의 실제 주소를 반환합니다.
구문
ULONG StorPortAllocateDmaMemory(
[in] PVOID HwDeviceExtension,
[in] SIZE_T NumberOfBytes,
[in] PHYSICAL_ADDRESS LowestAcceptableAddress,
[in] PHYSICAL_ADDRESS HighestAcceptableAddress,
[in, optional] PHYSICAL_ADDRESS BoundaryAddressMultiple,
[in] MEMORY_CACHING_TYPE CacheType,
[in] NODE_REQUIREMENT PreferredNode,
[out] PVOID *BufferPointer,
[out] PPHYSICAL_ADDRESS PhysicalAddress
);
매개 변수
[in] HwDeviceExtension
HBA(호스트 버스 어댑터)의 하드웨어 디바이스 확장에 대한 포인터입니다.
[in] NumberOfBytes
할당할 바이트 수입니다.
[in] LowestAcceptableAddress
할당에 유효한 가장 낮은 실제 주소입니다. 예를 들어 디바이스가 8MB에서 16MB 범위의 실제 메모리만 참조할 수 있는 경우 이 값은 0x800000(8MB)로 설정됩니다.
[in] HighestAcceptableAddress
할당에 유효한 가장 높은 실제 주소입니다. 예를 들어 디바이스가 16MB 미만의 실제 메모리만 참조할 수 있는 경우 이 값은 0xFFFFFF(16MB - 1)로 설정됩니다.
[in, optional] BoundaryAddressMultiple
이 할당이 교차해서는 안 되는 물리적 주소 배수입니다.
[in] CacheType
매핑에 필요한 캐시 유형입니다.
[in] PreferredNode
해당 노드에서 페이지를 사용할 수 있는 경우 할당을 수행해야 하는 기본 노드입니다.
[out] BufferPointer
할당된 메모리 블록의 시작 주소를 받는 변수입니다. 이 루틴에서 반환될 때 이 변수가 0이면 요청을 충족하기 위해 연속 범위를 찾을 수 없습니다. 이 변수가 NULL이 아니면 할당된 물리적으로 연속된 메모리에 대한 포인터(예: 시스템의 비페이지되지 않은 부분에 있는 가상 주소)가 포함됩니다.
[out] PhysicalAddress
할당된 메모리 블록의 실제 주소입니다.
반환 값
이 함수는 STOR_STATUS 코드를 반환합니다.
반환 코드 | 설명 |
---|---|
STOR_STATUS_NOT_IMPLEMENTED | 이 함수는 활성 운영 체제에서 구현되지 않습니다. |
STOR_STATUS_SUCCESS | 작업이 완료되었습니다. |
STOR_STATUS_INSUFFICIENT_RESOURCES | 리소스가 부족하여 요청된 메모리를 할당하지 못했습니다. |
설명
요청이 실패하면 BufferPointer가 NULL로 설정됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10(버전 1803) |
대상 플랫폼 | 유니버설 |
헤더 | storport.h |
DDI 규정 준수 규칙 | StorPortIrql |