次の方法で共有


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