OfferVirtualMemory 函式 (memoryapi.h)

表示應用程式不再需要包含在一系列記憶體頁面中的數據,並視需要由系統捨棄。

指定的頁面將會標示為無法存取、從進程工作集移除,而且不會寫入至分頁檔案。

若要稍後回收所提供的頁面,請呼叫 ReclaimVirtualMemory

語法

DWORD OfferVirtualMemory(
  [in] PVOID          VirtualAddress,
  [in] SIZE_T         Size,
  [in] OFFER_PRIORITY Priority
);

參數

[in] VirtualAddress

要提供之內存的頁面對齊起始位址。

[in] Size

要提供之內存區域的大小,以位元組為單位。 Size 必須是系統頁面大小的整數倍數。

[in] Priority

優先順序 表示提供記憶體對應用程式的重要性。 較高的優先順序會增加在呼叫 ReclaimVirtualMemory 時,可以完整回收所提供記憶體的可能性。 系統通常會捨棄優先順序較低的記憶體,再捨棄較高的優先順序記憶體。 優先順序 必須是下列其中一個值。

意義
VMOfferPriorityVeryLow
0x00000001
提供的記憶體非常低優先順序,而且應該是第一個捨棄的。
VMOfferPriorityLow
0x00000002
提供的記憶體優先順序很低。
VMOfferPriorityBelowNormal
0x00000003
提供的記憶體低於一般優先順序。
VMOfferPriorityNormal
0x00000004
提供的記憶體是應用程式的一般優先順序,而且應該是最後一個捨棄的。

傳回值

如果成功,ERROR_SUCCESS;否則為 系統錯誤碼

備註

若要回收提供的頁面,請呼叫 ReclaimVirtualMemory。 回收頁面中的數據可能已捨棄,在此情況下,記憶體區域的內容未定義,而且必須由應用程式重寫。

請勿呼叫 OfferVirtualMemory 來提供鎖定的虛擬記憶體。 這麼做會將指定的頁面範圍解除鎖定。

請注意,供應和回收虛擬記憶體類似於使用MEM_RESET和MEM_RESET_UNDO記憶體配置旗標,不同之處在於 OfferVirtualMemory 會從進程工作集移除記憶體,並限制存取所提供的頁面,直到回收為止。

規格需求

需求
最低支援的用戶端 Windows 8.1 更新版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 R2 更新 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 memoryapi.h (包括 Windows.h、Memoryapi.h)
程式庫 onecore.lib
DLL Kernel32.dll

另請參閱

DiscardVirtualMemory

記憶體管理功能

ReclaimVirtualMemory

虛擬記憶體函式

VirtualAlloc

VirtualFree

VirtualLock

VirtualQuery