Share via


StorPortAllocateHostMemoryBuffer 関数 (storport.h)

StorPortAllocateHostMemoryBuffer は、ホスト メモリ バッファー (HMB) として使用される物理的に連続するメモリの 1 つ以上の範囲を割り当てます。

構文

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 は、配列に 1 つ以上の物理アドレス範囲を入力します。

[in, out] PhysicalAddressRangeCount

PhysicalAddressRanges 内のエントリの数。 この関数は、このパラメーターを更新して、入力された物理アドレス範囲の数を示します。

戻り値

StorPortAllocateHostMemoryBuffer は 、次のいずれかの状態コードを返します。

リターン コード 説明
STOR_STATUS_SUCCESS PhysicalAddressRanges 配列には、ホスト メモリ バッファーを表す 1 つ以上の有効な物理アドレス範囲が含まれています。
STOR_STATUS_INVALID_PARAMETER これは、最大値より大きい最小値、ページアラインされていないサイズ、または PhysicalAddressRanges が空であることを示している可能性があります。
STOR_STATUS_INSUFFICIENT_RESOURCES ホスト メモリ バッファーを割り当てませんでした。

注釈

HMB は、デバイスが直接かつ排他的に使用できるメモリです。 デバイスはこのメモリを使用できますが、適切であると思われますが、突然の削除や予期しない電力損失が発生した場合に、データの損失やデータの破損がないことを確認する必要があります。

割り当てポリシーによっては、この関数は、デバイスの推奨サイズと同じだけ割り当てるか、デバイスの最小サイズと同じか、メモリをまったく割り当てない場合があります。

この関数は、可能な限り少数の物理的に連続したアドレス範囲の割り当てを試みますが、必要な HMB サイズを満たすために複数の物理アドレス範囲を使用する必要がある場合があります。

呼び出し元は、ホスト メモリ バッファーで完了したときに、その後 StorPortFreeHostMemoryBuffer を呼び出す必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header storport.h (Storport.h を含む)

こちらもご覧ください

StorPortFreeHostMemoryBuffer