使用頁面
若要判斷目前電腦上的頁面大小,請使用 GetSystemInfo 函式。
VirtualQuery 和 VirtualQueryEx函式會傳回連續頁面區域的相關資訊,從進程的位址空間中指定的位址開始。 VirtualQuery 會傳回呼叫進程中記憶體的相關資訊。 VirtualQueryEx 會傳回指定進程中記憶體的相關資訊,並用來支援需要所偵錯進程相關資訊的偵錯工具。 頁面的區域會由向下舍入至最接近頁面界限的指定位址所系結。 它會延伸至所有後續頁面,其中包含下列通用屬性:
- 所有頁面的狀態都相同:已認可、保留或免費。
- 如果初始頁面沒有可用,則區域中的所有頁面都屬於呼叫 VirtualAlloc所保留之頁面的相同初始配置。
- 所有頁面的存取保護都與 PAGE_READONLY、 PAGE_READWRITE或 PAGE_NOACCESS) 相同 (。
VirtualLock函式可讓進程將一或多個認可的記憶體頁面鎖定到實體記憶體 (RAM) ,以防止系統將頁面交換至分頁檔案。 它可以用來確保重要資料可在沒有磁片存取的情況下存取。 將分頁鎖定記憶體很危險,因為它會限制系統管理記憶體的能力。 過度使用 VirtualLock 可能會造成可執行檔程式碼交換至分頁檔案,進而降低系統效能。 VirtualUnlock函式會解除鎖定VirtualLock鎖定的記憶體。
VirtualProtect函式可讓進程修改進程位址空間中任何已認可頁面的存取保護。 例如,進程可以配置讀取/寫入頁面來儲存敏感性資料,然後它可以將存取權變更為唯讀或無法存取,以防止意外覆寫。 VirtualProtect 通常與 VirtualAlloc配置的頁面搭配使用,但它也適用于任何其他配置函式所認可的頁面。 不過, VirtualProtect 會變更整個頁面的保護,而其他函式所傳回的指標不一定對齊頁面界限。 VirtualProtectEx函式類似于VirtualProtect,但會變更指定進程中記憶體的保護。 變更保護對於偵錯工具存取所偵錯之進程的記憶體很有用。