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 を呼び出す必要があります。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | storport.h (Storport.h を含む) |
関連項目
StorPortFreeHostMemoryBufferの