共用方式為


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

另請參閱

MmFreeContiguousMemory