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 포함) |