MapViewOfFile3 函式 (memoryapi.h)
將檔案或頁面檔支援的區段檢視對應至指定進程的地址空間。
語法
PVOID MapViewOfFile3(
[in] HANDLE FileMapping,
[in] HANDLE Process,
[in, optional] PVOID BaseAddress,
[in] ULONG64 Offset,
[in] SIZE_T ViewSize,
[in] ULONG AllocationType,
[in] ULONG PageProtection,
[in, out, optional] MEM_EXTENDED_PARAMETER *ExtendedParameters,
[in] ULONG ParameterCount
);
參數
[in] FileMapping
HANDLE 對應至指定進程的位址空間區段。
[in] Process
HANDLE 至將對應區段的進程。
[in, optional] BaseAddress
檢視所需的基位址(位址會四捨五入至最接近的 64k 界限)。
如果此參數 NULL,則系統會挑選基位址。
如果 BaseAddress 不是 NULL,則任何提供的 MEM_ADDRESS_REQUIREMENTS 都必須包含所有零。
[in] Offset
區段開頭的位移。
當 AllocationType 中使用MEM_LARGE_PAGES時,位移必須對齊 64k,或對齊 GetLargePageMinimum。 此外,當 AllocationType 中使用MEM_REPLACE_PLACEHOLDER時,位移必須與 VirtualAlloc2 授與的基礎頁面大小對齊。
[in] ViewSize
要對應的位元組數目。 值為零 (0) 會指定要對應的整個區段。
大小一律必須是頁面大小的倍數。
[in] AllocationType
記憶體配置的類型。 此參數可以是零 (0) 或下列其中一個值。
價值 | 意義 |
---|---|
|
對應保留的檢視。 |
|
以對應的檢視取代佔位元。 僅支持數據/pf 支援的區段檢視(沒有影像、物理記憶體等)。 當您取代佔位元元時,BaseAddress 和 ViewSize 必須完全符合佔位符元的佔位符,而且任何提供的 MEM_ADDRESS_REQUIREMENTS 結構都必須包含所有零。
將佔位符取代為對應檢視之後,若要釋放該對應檢視回到佔位符,請參閱 unmapFlags 參數 UnmapViewOfFileEx,UnmapViewOfFile2。 佔位元是保留的記憶體區域類型。 指定此旗標時,Offset 和 BaseAddress 上的 64k 對齊需求不適用。 |
|
對應大型頁面檢視。 此旗標會指定檢視應該使用 大型頁面支援對應。 檢視的大小必須是 GetLargePageMinimum 函式所報告之大型頁面大小的倍數,而且必須使用 SEC_LARGE_PAGES 選項建立檔案對應物件。 如果您為 指定此旗標時,Offset 上的 64k 對齊需求不適用。 |
[in] PageProtection
所需的頁面保護。
對於使用 SEC_IMAGE 屬性建立的檔案對應物件,PageProtection 參數沒有任何作用,而且應該設定為任何有效的值,例如 PAGE_READONLY。
[in, out, optional] ExtendedParameters
MEM_EXTENDED_PARAMETER類型之一或多個擴充參數的選擇性指標。 每個擴充參數值本身都可以有 MemExtendedParameterAddressRequirements 或 MemExtendedParameterNumaNodeType 字段。 如果未提供 MemExtendedParameterNumaNode 擴充參數,則行為會與 VirtualAlloc/MapViewOfFile 函式相同(亦即,實體頁面的慣用 NUMA 節點是根據第一次存取記憶體之線程的理想處理器來決定)。
[in] ParameterCount
ExtendedParameters 所指向的擴充參數數目。
傳回值
如果成功,會傳回對應檢視的基位址。 否則,使用 getLastError
言論
此 API 可協助支援高效能遊戲,以及伺服器應用程式,這些應用程式對於管理其虛擬位址空間有特定需求。 例如,在先前保留的區域之上對應記憶體;這適用於實作自動包裝環形緩衝區。 並配置具有特定對齊方式的記憶體;例如,若要讓應用程式視需要認可大型/大型頁面對應區域。
針對新的設定使用此函式,您可以:
- 指定虛擬位址空間的範圍和 2 的對齊限制
- 指定任意數目的擴充參數
- 將實體記憶體的慣用NUMA節點指定為擴充參數
- 指定佔位元元作業(特別是取代)。
若要指定 NUMA 節點,請參閱 ExtendedParameters 參數。
例子
如需程式代碼範例,請參閱 virtualAlloc2 中的案例 1。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1803 [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2016 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | memoryapi.h (包括 Windows.h) |
連結庫 | onecore.lib |
DLL | Kernel32.dll |