MmAllocateContiguousMemoryEx 関数 (wdm.h)

MmAllocateContiguousMemoryEx 関数は、物理的に連続する非ページ メモリの範囲を割り当て、その仮想アドレスを返します。

構文

NTSTATUS MmAllocateContiguousMemoryEx(
  [in]           PSIZE_T          NumberOfBytes,
  [in]           PHYSICAL_ADDRESS LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS HighestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS BoundaryAddressMultiple,
  [in]           NODE_REQUIREMENT PreferredNode,
  [in]           ULONG            Protect,
  [in, optional] PVOID            PartitionObject,
  [in]           ULONG            Tag,
  [in]           ULONG            Flags,
  [out]          PVOID            *BaseAddress
);

パラメーター

[in] NumberOfBytes

エントリで、割り当てるバイト数を指定します。 正常に戻った場合は、割り当てられた金額を受け取ります。

[in] LowestAcceptableAddress

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

[in] HighestAcceptableAddress

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

[in] BoundaryAddressMultiple

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

[in] PreferredNode

ページがそのノードで使用可能な場合に割り当てる必要がある優先ノードを提供します。 MM_ANY_NODE_OKは、ノード設定がないことを示すために使用されます。

[in] Protect

マッピングに必要な保護 (キャッシュの種類を含む) を提供します。

[in, optional] PartitionObject

指定した場合は、物理メモリを割り当てるパーティション オブジェクトを提供します。 指定しない場合、メモリはシステム パーティションから取得されます。

[in] Tag

割り当てのタグを指定します。

[in] Flags

さまざまなフラグ:

  • MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY - 必要な連続したメモリをすぐに満たすことができる場合にのみ割り当てます。 割り当てを満たすために長時間の物理メモリの検索と取引を行う必要がある場合は失敗します。

[out] BaseAddress

成功すると、連続したメモリのベース仮想アドレスを受け取ります。

戻り値

NTSTATUS コードを返します。

注釈

このメモリは 、MmFreeContiguousMemory を使用して解放する必要があります。

要件

   
サポートされている最小のサーバー Windows Server 2022
Header wdm.h
IRQL <= DISPATCH_LEVEL

関連項目

MmFreeContiguousMemory