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

추가 정보

StorPortFreeDmaMemory