Freigeben über


NtQueryVirtualMemory-Funktion (ntifs.h)

Die NtQueryVirtualMemory Routine bestimmt den Zustand, den Schutz und den Typ eines Seitenbereichs innerhalb des virtuellen Adressraums des angegebenen Prozesses.

Syntax

__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

Behandeln Sie den Prozess, in dem sich der Kontext der abzufragten Seiten befindet. Verwenden Sie das NtCurrentProcess Makro, um den aktuellen Prozess anzugeben.

[in, optional] BaseAddress

Die Basisadresse des Seitenbereichs, der abgefragt werden soll. Dieser Wert wird auf die nächste Hostseitenadressengrenze abgerundet.

[in] MemoryInformationClass

Die Speicherinformationsklasse, über die Informationen abgerufen werden sollen. Derzeit wird der einzige unterstützte MEMORY_INFORMATION_CLASS Wert MemoryBasicInformation.

[out] MemoryInformation

Zeiger auf einen Puffer, der die angegebenen Informationen empfängt. Das Format und der Inhalt des Puffers hängen von der im MemoryInformationClass Parameter angegebenen Informationsklasse ab. Wenn der Wert MemoryBasicInformation- an MemoryInformationClassübergeben wird, ist der MemoryInformation Parameterwert eine MEMORY_BASIC_INFORMATION Struktur.

[in] MemoryInformationLength

Gibt die Länge des Puffers in Bytes an, auf den MemoryInformation verweist.

[out, optional] ReturnLength

Ein optionaler Zeiger, der, falls angegeben, die Anzahl der Bytes empfängt, die im MemoryInformation Puffer platziert werden.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Wenn der Aufruf fehlschlägt, umfassen mögliche Fehlercodes Folgendes:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED Der Aufrufer verfügte über unzureichende Zugriffsrechte, um die angeforderte Aktion auszuführen.
STATUS_ACCESS_VIOLATION Die angegebene Basisadresse ist eine ungültige virtuelle Adresse.
STATUS_INFO_LENGTH_MISMATCH Der MemoryInformation Puffer ist größer als MemoryInformationLength.
STATUS_INVALID_INFO_CLASS Der angegebene MemoryInformationClass Parameter ist ungültig.
STATUS_INVALID_PARAMETER Die angegebene Basisadresse liegt außerhalb des Bereichs der barrierefreien Adressen.

Bemerkungen

ZwQueryVirtualMemory bestimmt den Status der ersten Seite innerhalb der Region und durchsucht dann nachfolgende Einträge in der Prozessadresszuordnung von der Basisadresse nach oben, bis entweder der gesamte Seitenbereich gescannt wurde oder bis eine Seite mit einem nicht übereinstimmenden Satz von Attributen gefunden wird. Die Regionsattribute, die Länge des Seitenbereichs mit übereinstimmenden Attributen und ein entsprechender Statuswert werden zurückgegeben.

Wenn der gesamte Seitenbereich nicht über einen übereinstimmenden Satz von Attributen verfügt, werden die Unterbereiche innerhalb einer Adressreservierung einzeln zurückgegeben. Sie haben dieselbe *MemoryInformation.AllocationBase Wert, ihre individuellen Größen befinden sich in *MemoryInformation.RegionSize, und die Gesamtgröße der Adressreservierung kann abgerufen werden, indem alle *MemoryInformation.RegionSize Werten addiert werden, die einem bestimmten *MemoryInformation.AllocationBase Wert zugeordnet sind.

NtQueryVirtualMemory und ZwQueryVirtualMemory sind zwei Versionen derselben Windows Native System Services-Routine.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx und ZwXxx- Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h
Library NtosKrnl.lib
DLL- NtosKrnl.exe

Siehe auch

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory