Fungsi NtQueryVirtualMemory (ntifs.h)

Rutinitas NtQueryVirtualMemory menentukan status, perlindungan, dan jenis wilayah halaman dalam ruang alamat virtual dari proses yang ditentukan.

Sintaks

__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryVirtualMemory(
  [in]            HANDLE                   ProcessHandle,
  [in, optional]  PVOID                    BaseAddress,
  [in]            MEMORY_INFORMATION_CLASS MemoryInformationClass,
  [out]           PVOID                    MemoryInformation,
  [in]            SIZE_T                   MemoryInformationLength,
  [out, optional] PSIZE_T                  ReturnLength
);

Parameter

[in] ProcessHandle

Tangani untuk proses dalam konteks halaman yang akan dikueri berada. Gunakan makro NtCurrentProcess untuk menentukan proses saat ini.

[in, optional] BaseAddress

Alamat dasar wilayah halaman yang akan dikueri. Nilai ini dibulatkan ke bawah ke batas alamat halaman host berikutnya.

[in] MemoryInformationClass

Kelas informasi memori yang akan diambil informasinya. Saat ini, satu-satunya nilai MEMORY_INFORMATION_CLASS yang didukung adalah MemoryBasicInformation.

[out] MemoryInformation

Penunjuk ke buffer yang menerima informasi yang ditentukan. Format dan konten buffer bergantung pada kelas informasi yang ditentukan dalam parameter MemoryInformationClass . Ketika nilai MemoryBasicInformation diteruskan ke MemoryInformationClass, nilai parameter MemoryInformation adalah struktur MEMORY_BASIC_INFORMATION .

[in] MemoryInformationLength

Menentukan panjang, dalam byte, dari buffer yang dituju oleh MemoryInformation .

[out, optional] ReturnLength

Penunjuk opsional yang, jika ditentukan, menerima jumlah byte yang ditempatkan dalam buffer MemoryInformation .

Nilai kembali

Mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika panggilan gagal, kemungkinan kode kesalahan termasuk yang berikut:

Menampilkan kode Deskripsi
STATUS_ACCESS_DENIED Pemanggil memiliki hak akses yang tidak mencukup untuk melakukan tindakan yang diminta.
STATUS_ACCESS_VIOLATION Alamat dasar yang ditentukan adalah alamat virtual yang tidak valid.
STATUS_INFO_LENGTH_MISMATCH Buffer MemoryInformation lebih besar dari MemoryInformationLength.
STATUS_INVALID_INFO_CLASS Parameter MemoryInformationClass yang ditentukan tidak valid.
STATUS_INVALID_PARAMETER Alamat dasar yang ditentukan berada di luar rentang alamat yang dapat diakses.

Keterangan

ZwQueryVirtualMemory menentukan status halaman pertama dalam wilayah tersebut lalu memindai entri berikutnya dalam peta alamat proses dari alamat dasar ke atas hingga seluruh rentang halaman telah dipindai atau hingga halaman dengan sekumpulan atribut yang tidak cocok ditemukan. Atribut wilayah, panjang wilayah halaman dengan atribut yang cocok, dan nilai status yang sesuai dikembalikan.

Jika seluruh wilayah halaman tidak memiliki sekumpulan atribut yang cocok, maka sub-wilayah dalam satu reservasi alamat akan dikembalikan satu per satu. Mereka akan memiliki nilai *MemoryInformation.AllocationBase yang sama, ukuran individualnya akan berada di *MemoryInformation.RegionSize, dan ukuran total reservasi alamat dapat diperoleh dengan menjumlahkan semua nilai *MemoryInformation.RegionSize yang terkait dengan nilai *MemoryInformation.AllocationBase tertentu.

NtQueryVirtualMemory dan ZwQueryVirtualMemory adalah dua versi dari rutinitas Windows Native System Services yang sama.

Untuk panggilan dari driver mode kernel, versi NtXxx dan ZwXxx dari rutinItas Windows Native System Services dapat berperilaku berbeda dalam cara mereka menangani dan menginterpretasikan parameter input. Untuk informasi selengkapnya tentang hubungan antara versi NtXxx dan ZwXxx dari rutinitas, lihat Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000
Target Platform Universal
Header ntifs.h
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe

Lihat juga

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory