Fonction NtQueryVirtualMemory (ntifs.h)
La routine NtQueryVirtualMemory détermine l’état, la protection et le type d’une région de pages dans l’espace d’adressage virtuel du processus spécifié.
Syntaxe
__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
);
Paramètres
[in] ProcessHandle
Handle pour le processus dans lequel résident les pages à interroger. Utilisez la macro NtCurrentProcess pour spécifier le processus actuel.
[in, optional] BaseAddress
Adresse de base de la région des pages à interroger. Cette valeur est arrondie à la limite d’adresse de page d’hôte suivante.
[in] MemoryInformationClass
Classe d’informations mémoire sur laquelle récupérer des informations. Actuellement, la seule valeur MEMORY_INFORMATION_CLASS prise en charge est MemoryBasicInformation.
[out] MemoryInformation
Pointeur vers une mémoire tampon qui reçoit les informations spécifiées. Le format et le contenu de la mémoire tampon dépendent de la classe d’informations spécifiée dans le paramètre MemoryInformationClass . Lorsque la valeur MemoryBasicInformation est passée à MemoryInformationClass, la valeur du paramètre MemoryInformation est une structure MEMORY_BASIC_INFORMATION .
[in] MemoryInformationLength
Spécifie la longueur, en octets, de la mémoire tampon vers laquelle pointe MemoryInformation .
[out, optional] ReturnLength
Pointeur facultatif qui, s’il est spécifié, reçoit le nombre d’octets placés dans la mémoire tampon MemoryInformation .
Valeur retournée
Retourne STATUS_SUCCESS si l’appel réussit. Si l’appel échoue, les codes d’erreur possibles sont les suivants :
Code de retour | Description |
---|---|
STATUS_ACCESS_DENIED | L’appelant n’avait pas les droits d’accès nécessaires pour effectuer l’action demandée. |
STATUS_ACCESS_VIOLATION | L’adresse de base spécifiée est une adresse virtuelle non valide. |
STATUS_INFO_LENGTH_MISMATCH | La mémoire tampon MemoryInformation est supérieure à MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | Le paramètre MemoryInformationClass spécifié n’est pas valide. |
STATUS_INVALID_PARAMETER | L’adresse de base spécifiée se trouve en dehors de la plage d’adresses accessibles. |
Remarques
ZwQueryVirtualMemory détermine l’état de la première page dans la région, puis analyse les entrées suivantes dans le mappage d’adresses de processus à partir de l’adresse de base jusqu’à ce que l’intégralité de la plage de pages ait été analysée ou jusqu’à ce qu’une page avec un ensemble d’attributs non correspondant soit rencontrée. Les attributs de région, la longueur de la région de pages avec des attributs correspondants et une valeur de status appropriée sont retournés.
Si la région entière des pages n’a pas de jeu d’attributs correspondant, les sous-régions d’une réservation d’adresse sont retournées individuellement. Ils auront la même valeur *MemoryInformation.AllocationBase , leurs tailles individuelles seront dans *MemoryInformation.RegionSize, et la taille totale de la réservation d’adresse peut être obtenue en additionnant toutes les valeurs *MemoryInformation.RegionSize associées à une valeur *MemoryInformation.AllocationBase particulière.
NtQueryVirtualMemory et ZwQueryVirtualMemory sont deux versions de la même routine des services système natifs Windows.
Pour les appels provenant de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Using Nt and Zw Versions of the Native System Services Routines.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 |
Plateforme cible | Universal |
En-tête | ntifs.h |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |