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 |