共用方式為


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

對配置有效的最低實體位址。 例如,如果裝置只能參考 8 MB 到 16 MB 範圍內的實體記憶體,此值會設定為 0x800000 (8 MB) 。

[in] HighestAcceptableAddress

對配置有效的最高實體位址。 例如,如果裝置只能參考低於 16 MB 的實體記憶體,此值會設定為 0xFFFFFF (16 MB - 1) 。

[in, optional] BoundaryAddressMultiple

此配置不可跨越的實體位址倍數。 此參數目前未使用,且必須設定為 0。

[in, out] PhysicalAddressRanges

組成主機記憶體緩衝區的實體位址範圍陣列。 呼叫端應該提供預先配置的陣列。 StorPortAllocateHostMemoryBuffer 會將一或多個實體位址範圍填入陣列中。

[in, out] PhysicalAddressRangeCount

PhysicalAddressRanges 中的項目數目。 此函式會更新此參數,以指出其填入的實體位址範圍。

傳回值

StorPortAllocateHostMemoryBuffer 會傳回下列其中一個狀態代碼:

傳回碼 Description
STOR_STATUS_SUCCESS PhysicalAddressRanges 陣列包含一或多個代表主機記憶體緩衝區的有效實體位址範圍。
STOR_STATUS_INVALID_PARAMETER 這可能表示大於最大值、非頁面對齊大小的最小值,或 PhysicalAddressRanges 是空的。
STOR_STATUS_INSUFFICIENT_RESOURCES 無法配置主機記憶體緩衝區。

備註

HMB 是裝置可以直接和獨佔使用的記憶體。 不過,裝置可能會使用此記憶體,但必須確定在意外移除或意外電源遺失時不會遺失數據或數據損毀。

視配置原則而定,此函式可能會配置與裝置慣用大小一樣多、裝置的大小下限,或完全沒有記憶體。

此函式會儘可能嘗試配置最少的實體連續位址範圍,但可能需要使用多個實體位址範圍來滿足所需的 HMB 大小。

呼叫端應該會在使用主機記憶體緩衝區完成時呼叫 StorPortFreeHostMemoryBuffer

規格需求

需求
目標平台 Universal
標頭 storport.h (包含 Storport.h)

另請參閱

StorPortFreeHostMemoryBuffer