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 |
ヘッダー | wdm.h |
IRQL | <= DISPATCH_LEVEL |