Fungsi VirtualQueryEx (memoryapi.h)
Mengambil informasi tentang rentang halaman dalam ruang alamat virtual dari proses yang ditentukan.
Sintaks
SIZE_T VirtualQueryEx(
[in] HANDLE hProcess,
[in, optional] LPCVOID lpAddress,
[out] PMEMORY_BASIC_INFORMATION lpBuffer,
[in] SIZE_T dwLength
);
Parameter
[in] hProcess
Handel untuk proses yang informasi memorinya dikueri. Handel harus dibuka dengan hak akses PROCESS_QUERY_INFORMATION , yang memungkinkan penggunaan handel untuk membaca informasi dari objek proses. Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.
[in, optional] lpAddress
Penunjuk ke alamat dasar wilayah halaman yang akan dikueri. Nilai ini dibulatkan ke bawah ke batas halaman berikutnya. Untuk menentukan ukuran halaman di komputer host, gunakan fungsi GetSystemInfo .
Jika lpAddress menentukan alamat di atas alamat memori tertinggi yang dapat diakses oleh proses, fungsi gagal dengan ERROR_INVALID_PARAMETER.
[out] lpBuffer
Penunjuk ke struktur MEMORY_BASIC_INFORMATION di mana informasi tentang rentang halaman yang ditentukan dikembalikan.
[in] dwLength
Ukuran buffer yang diacu oleh parameter lpBuffer , dalam byte.
Menampilkan nilai
Nilai yang dikembalikan adalah jumlah aktual byte yang dikembalikan dalam buffer informasi.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kemungkinan nilai kesalahan termasuk ERROR_INVALID_PARAMETER.
Keterangan
VirtualQueryEx menyediakan informasi tentang wilayah halaman berturut-turut yang dimulai pada alamat tertentu yang berbagi atribut berikut:
- Status semua halaman sama (MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED, atau MEM_IMAGE).
- Jika halaman awal tidak gratis, semua halaman di wilayah tersebut adalah bagian dari alokasi awal halaman yang sama yang dibuat oleh satu panggilan ke VirtualAlloc, MapViewOfFile, atau salah satu versi fungsi yang diperluas berikut: VirtualAllocEx, VirtualAllocExNuma, MapViewOfFileEx, MapViewOfFileExNuma.
- Akses yang diberikan ke semua halaman sama (PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD, atau PAGE_NOCACHE).
Jika halaman salin-tulis bersama dimodifikasi, halaman tersebut menjadi privat untuk proses yang memodifikasi halaman. Namun, fungsi VirtualQueryEx akan terus melaporkan halaman seperti MEM_MAPPED (untuk tampilan data) atau MEM_IMAGE (untuk tampilan gambar yang dapat dieksekusi) daripada MEM_PRIVATE. Untuk mendeteksi apakah copy-on-write telah terjadi untuk halaman tertentu, akses halaman atau kunci menggunakan fungsi VirtualLock untuk memastikan halaman berada dalam memori, lalu gunakan fungsi QueryWorkingSet atau QueryWorkingSetEx untuk memeriksa bit Bersama di informasi set kerja yang diperluas untuk halaman tersebut. Jika bit Bersama jelas, halaman bersifat privat.
Persyaratan
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | memoryapi.h (termasuk Windows.h, Memoryapi.h) |
Pustaka | onecore.lib |
DLL | Kernel32.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk