Fonction ZwQueryVirtualMemory (ntifs.h)
La routine ZwQueryVirtualMemory détermine l’état, la protection et le type d’une région de pages dans l’espace d’adressage virtuel du processus d’objet.
Syntaxe
NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
[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 ZwCurrentProcess pour spécifier le processus en cours.
[in, optional] BaseAddress
Adresse de base de la région des pages à interroger. Cette valeur est arrondie à la limite d’adresse de page 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 d’informations.
[out, optional] ReturnLength
Pointeur facultatif qui, s’il est spécifié, reçoit le nombre d’octets placés dans la mémoire tampon d’informations.
Valeur retournée
Retourne STATUS_SUCCESS si l’appel réussit. Si l’appel échoue, les codes d’erreur possibles incluent les éléments suivants :
Code de retour | Description |
---|---|
STATUS_INVALID_PARAMETER | L’adresse de base spécifiée se trouve en dehors de la plage des adresses accessibles. |
STATUS_ACCESS_DENIED | L’appelant ne disposait pas des droits d’accès suffisants pour effectuer l’action demandée. |
STATUS_INFO_LENGTH_MISMATCH | La mémoire tampon MemoryInformation est plus grande que MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | Une valeur autre que MemoryBasicInformation a été passée au paramètre MemoryInformationClass . |
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 toute 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 d’ensemble d’attributs correspondant, la valeur du paramètre ReturnLength peut être utilisée pour calculer l’adresse et la longueur de la région de pages qui n’ont pas été analysées.
NtQueryVirtualMemory et ZwQueryVirtualMemory sont deux versions de la même routine Windows Native System Services.
Pour les appels à partir 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 Utilisation des versions Nt et Zw des routines des services système natifs.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Plateforme cible | Universal |
En-tête | ntifs.h |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |