ZwQueryVirtualMemory 函式 (ntifs.h)
ZwQueryVirtualMemory 例程會決定主旨進程虛擬位址空間內頁面區域的狀態、保護和類型。
語法
NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
[in] HANDLE ProcessHandle,
[in, optional] PVOID BaseAddress,
[in] MEMORY_INFORMATION_CLASS MemoryInformationClass,
[out] PVOID MemoryInformation,
[in] SIZE_T MemoryInformationLength,
[out, optional] PSIZE_T ReturnLength
);
參數
[in] ProcessHandle
要查詢頁面所在之進程的句柄。 使用 ZwCurrentProcess 巨集來指定目前的進程。
[in, optional] BaseAddress
要查詢之頁面區域的基位址。 此值會四捨五入至下一個主機頁面位址界限。
[in] MemoryInformationClass
要擷取資訊的記憶體信息類別。 目前唯一支援的 MEMORY_INFORMATION_CLASS 值是 MemoryBasicInformation。
[out] MemoryInformation
接收指定信息的緩衝區指標。 緩衝區的格式和內容取決於 MemoryInformationClass 參數中指定的指定資訊類別。 當 memoryBasicInformation
[in] MemoryInformationLength
指定記憶體資訊緩衝區的位元組長度。
[out, optional] ReturnLength
選擇性指標,如果指定,則會接收放在記憶體資訊緩衝區中的位元元組數目。
傳回值
如果呼叫成功,則傳回STATUS_SUCCESS。 如果呼叫失敗,可能的錯誤碼包括:
傳回碼 | 描述 |
---|---|
STATUS_INVALID_PARAMETER | 指定的基位址超出可存取位址的範圍。 |
STATUS_ACCESS_DENIED | 呼叫端的訪問許可權不足,無法執行要求的動作。 |
STATUS_INFO_LENGTH_MISMATCH | MemoryInformation 緩衝區大於 memoryInformationLength 。 |
STATUS_INVALID_INFO_CLASS | MemoryBasicInformation 以外的值已傳遞至 MemoryInformationClass 參數。 |
言論
ZwQueryVirtualMemory 會決定區域內第一頁的狀態,然後從基位址向上掃描進程地址對應中的後續專案,直到掃描整個頁面範圍,或直到遇到具有非相符屬性集的頁面為止。 區域屬性、具有相符屬性的頁面區域長度,以及傳回適當的狀態值。
如果整個頁面區域沒有相符的屬性集,則 ReturnLength 參數值可用來計算未掃描的頁面位址和長度。
NtQueryVirtualMemory 和 ZwQueryVirtualMemory 是相同 Windows 原生系統服務例程的兩個版本。
針對來自內核模式驅動程式的呼叫,NtXxx**** 和 ZwXxx**** 版本的 Windows 原生系統服務例程的運作方式可能會因處理和解譯輸入參數的方式而不同。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 10 |
目標平臺 | 普遍 |
標頭 | ntifs.h |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |