StorPortAllocateDmaMemory 関数 (storport.h)

この関数は 、StorPortAllocateContiguousMemorySpecifyCacheNode 関数の拡張バージョンです。 キャッシュされていない、非ページメモリの物理的に連続する範囲を割り当て、割り当てられたバッファーの物理アドレスを返します。

構文

ULONG StorPortAllocateDmaMemory(
  [in]           PVOID               HwDeviceExtension,
  [in]           SIZE_T              NumberOfBytes,
  [in]           PHYSICAL_ADDRESS    LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS    HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS    BoundaryAddressMultiple,
  [in]           MEMORY_CACHING_TYPE CacheType,
  [in]           NODE_REQUIREMENT    PreferredNode,
  [out]          PVOID               *BufferPointer,
  [out]          PPHYSICAL_ADDRESS   PhysicalAddress
);

パラメーター

[in] HwDeviceExtension

ホスト バス アダプター (HBA) のハードウェア デバイス拡張機能へのポインター。

[in] NumberOfBytes

割り当てるバイト数。

[in] LowestAcceptableAddress

割り当てに有効な最小の物理アドレス。 たとえば、デバイスが 8 MB から 16 MB の範囲の物理メモリのみを参照できる場合、この値は 0x800000 (8 MB) に設定されます。

[in] HighestAcceptableAddress

割り当てに有効な最大物理アドレス。 たとえば、デバイスが 16 MB 未満の物理メモリのみを参照できる場合、この値は 0xFFFFFF (16 MB - 1) に設定されます。

[in, optional] BoundaryAddressMultiple

この割り当てが交差してはならない複数の物理アドレス。

[in] CacheType

マッピングに必要なキャッシュの種類。

[in] PreferredNode

ページがそのノードで使用可能な場合に割り当てを行う必要がある優先ノード。

[out] BufferPointer

割り当てられたメモリ ブロックの開始アドレスを受け取る変数。 このルーチンから戻ると、この変数が 0 の場合、要求を満たすために連続した範囲が見つかりませんでした。 この変数が NULL でない場合は、割り当てられた物理的に連続したメモリへのポインター (たとえば、システムの非ページ部分の仮想アドレス) が含まれます。

[out] PhysicalAddress

割り当てられたメモリ ブロックの物理アドレス。

戻り値

この関数は、STOR_STATUS コードを返します。

リターン コード 説明
STOR_STATUS_NOT_IMPLEMENTED この関数は、アクティブなオペレーティング システムには実装されません。
STOR_STATUS_SUCCESS 操作に成功しました。
STOR_STATUS_INSUFFICIENT_RESOURCES リソースが不足しているため、要求されたメモリの割り当てに失敗しました。

注釈

要求が失敗した場合、BufferPointer は NULL に設定されます。

要件

要件
サポートされている最小のクライアント Windows 10 (バージョン 1803)
対象プラットフォーム ユニバーサル
Header storport.h
DDI コンプライアンス規則 StorPortIrql

こちらもご覧ください

StorPortFreeDmaMemory