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 を含む) |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示