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 到 16MB 範圍內的物理記憶體,此值會設定為 0x800000 (8Mb) 。
[in] HighestAcceptableAddress
提供配置有效的最高實體位址。 例如,如果裝置只能參考低於 16 MB 的實體記憶體,此值會設定為 0xFFFFFF (16Mb - 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 |