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
Handle für den Prozess, in dessen Kontext sich die abzufragten Seiten befinden. Verwenden Sie das NtCurrentProcess-Makro , um den aktuellen Prozess anzugeben.
[in, optional] BaseAddress
Die Basisadresse des Bereichs der abzufragenden Seiten. Dieser Wert wird auf die nächste Hostseitenadressengrenze gerundet.
[in] MemoryInformationClass
Die Speicherinformationsklasse, über die Informationen abgerufen werden sollen. Derzeit wird der einzige MEMORY_INFORMATION_CLASS Wert unterstützt : MemoryBasicInformation.
[out] MemoryInformation
Zeiger auf einen Puffer, der die angegebenen Informationen empfängt. Format und Inhalt des Puffers hängen von der im Parameter MemoryInformationClass angegebenen Informationsklasse ab. Wenn der Wert MemoryBasicInformation an MemoryInformationClass übergeben wird, ist der Wert des MemoryInformation-Parameters 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, sofern angegeben, die Anzahl der Bytes empfängt, die im MemoryInformation-Puffer platziert sind.
Rückgabewert
Gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Wenn der Aufruf fehlschlägt, sind folgende Fehlercodes möglich:
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 zugänglichen Adressen. |
Hinweise
ZwQueryVirtualMemory bestimmt den Zustand der ersten Seite innerhalb des Bereichs und scannt 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 wurde. Die Regionsattribute, die Länge des Bereichs der Seiten mit übereinstimmenden Attributen und ein entsprechender status Wert werden zurückgegeben.
Wenn der gesamte Bereich der Seiten nicht über einen übereinstimmenden Satz von Attributen verfügt, werden die Unterregionen innerhalb einer Adressreservierung einzeln zurückgegeben. Sie verfügen über denselben * MemoryInformation.AllocationBase-Wert , ihre individuellen Größen befinden sich in *MemoryInformation.RegionSize, und die Gesamtgröße der Adressreservierung kann durch Summieren aller *MemoryInformation.RegionSize-Werte abgerufen 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 verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 |
Zielplattform | Universell |
Header | ntifs.h |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |