StorPortAllocateHostMemoryBuffer 함수(storport.h)

StorPortAllocateHostMemoryBuffer 는 HMB(호스트 메모리 버퍼)로 사용할 물리적으로 연속된 메모리 범위를 하나 이상 할당합니다.

구문

ULONG StorPortAllocateHostMemoryBuffer(
  [in]           PVOID            HwDeviceExtension,
  [in]           SIZE_T           MinimumBytes,
  [in]           SIZE_T           PreferredBytes,
  [in]           ULONGLONG        UtilizationBytes,
  [in]           ULONG            AlignmentBytes,
  [in]           PHYSICAL_ADDRESS LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS BoundaryAddressMultiple,
  [in, out]      PACCESS_RANGE    PhysicalAddressRanges,
  [in, out]      PULONG           PhysicalAddressRangeCount
);

매개 변수

[in] HwDeviceExtension

HBA(호스트 버스 어댑터)의 하드웨어 디바이스 확장에 대한 포인터입니다.

[in] MinimumBytes

디바이스에 유용한 최소 메모리 양(바이트)입니다. 값이 0이면 원하는 크기까지의 모든 메모리 크기가 허용됨을 나타냅니다.

[in] PreferredBytes

디바이스에서 선호하는 메모리 양(바이트)입니다. 페이지 크기의 배수여야 합니다.

[in] UtilizationBytes

디바이스에 할당된 총 블록 수(바이트)입니다.

[in] AlignmentBytes

디바이스의 호스트 메모리 버퍼 맞춤 요구 사항입니다.

[in] LowestAcceptableAddress

할당에 유효한 가장 낮은 실제 주소입니다. 예를 들어 디바이스가 8MB에서 16MB 범위의 실제 메모리만 참조할 수 있는 경우 이 값은 0x800000(8MB)로 설정됩니다.

[in] HighestAcceptableAddress

할당에 유효한 가장 높은 실제 주소입니다. 예를 들어 디바이스가 16MB 미만의 실제 메모리만 참조할 수 있는 경우 이 값은 0xFFFFFF(16MB - 1)로 설정됩니다.

[in, optional] BoundaryAddressMultiple

이 할당이 교차해서는 안 되는 물리적 주소 배수입니다. 이 매개 변수는 현재 사용되지 않으며 0으로 설정해야 합니다.

[in, out] PhysicalAddressRanges

호스트 메모리 버퍼를 구성하는 실제 주소 범위의 배열입니다. 호출자는 미리 할당된 배열을 제공해야 합니다. StorPortAllocateHostMemoryBuffer 는 하나 이상의 실제 주소 범위로 배열을 채웁니다.

[in, out] PhysicalAddressRangeCount

PhysicalAddressRanges의 항목 수입니다. 이 함수는 입력한 실제 주소 범위 수를 나타내도록 이 매개 변수를 업데이트합니다.

반환 값

StorPortAllocateHostMemoryBuffer는 다음 상태 코드 중 하나를 반환합니다.

반환 코드 설명
STOR_STATUS_SUCCESS PhysicalAddressRanges 배열에는 호스트 메모리 버퍼를 나타내는 하나 이상의 유효한 실제 주소 범위가 포함되어 있습니다.
STOR_STATUS_INVALID_PARAMETER 이는 최댓값보다 큰 최소값, 페이지 정렬되지 않은 크기 또는 PhysicalAddressRanges 가 비어 있음을 나타낼 수 있습니다.
STOR_STATUS_INSUFFICIENT_RESOURCES 호스트 메모리 버퍼를 할당할 수 없습니다.

설명

HMB는 디바이스에서 직접 단독으로 사용할 수 있는 메모리입니다. 디바이스는 이 메모리를 사용할 수 있지만 적합하지만, 갑작스러운 제거 또는 예기치 않은 전원 손실이 발생할 경우 데이터 손실 또는 데이터 손상이 없는지 확인해야 합니다.

할당 정책에 따라 이 함수는 디바이스의 최소 크기만큼 적게 또는 메모리가 전혀 없는 디바이스의 기본 크기만큼 할당할 수 있습니다.

이 함수는 가능한 한 적은 수의 물리적으로 연속된 주소 범위를 할당하려고 시도하지만 원하는 HMB 크기를 충족하기 위해 여러 물리적 주소 범위를 사용해야 할 수 있습니다.

호출자는 호스트 메모리 버퍼를 사용하여 수행되면 StorPortFreeHostMemoryBuffer 를 호출해야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 storport.h(Storport.h 포함)

추가 정보

StorPortFreeHostMemoryBuffer