Función ZwQueryVirtualMemory (ntifs.h)
La rutina ZwQueryVirtualMemory determina el estado, la protección y el tipo de una región de páginas dentro del espacio de direcciones virtuales del proceso del sujeto.
Sintaxis
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
);
Parámetros
[in] ProcessHandle
Identificador del proceso en cuyo contexto residen las páginas que se van a consultar. Use la macro ZwCurrentProcess para especificar el proceso actual.
[in, optional] BaseAddress
Dirección base de la región de las páginas que se van a consultar. Este valor se redondea hacia abajo hasta el siguiente límite de dirección de la página host.
[in] MemoryInformationClass
Clase de información de memoria sobre la que se va a recuperar información. Actualmente, el único valor de MEMORY_INFORMATION_CLASS admitido es MemoryBasicInformation.
[out] MemoryInformation
Puntero a un búfer que recibe la información especificada. El formato y el contenido del búfer dependen de la clase de información especificada en el parámetro MemoryInformationClass . Cuando el valor MemoryBasicInformation se pasa a MemoryInformationClass, el valor del parámetro MemoryInformation es una estructura MEMORY_BASIC_INFORMATION .
[in] MemoryInformationLength
Especifica la longitud en bytes del búfer de información de memoria.
[out, optional] ReturnLength
Puntero opcional que, si se especifica, recibe el número de bytes colocados en el búfer de información de memoria.
Valor devuelto
Devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Si se produce un error en la llamada, los posibles códigos de error incluyen lo siguiente:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER | La dirección base especificada está fuera del intervalo de direcciones accesibles. |
STATUS_ACCESS_DENIED | El autor de la llamada tenía derechos de acceso insuficientes para realizar la acción solicitada. |
STATUS_INFO_LENGTH_MISMATCH | El búfer MemoryInformation es mayor que MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | Se pasó un valor distinto de MemoryBasicInformation al parámetro MemoryInformationClass . |
Comentarios
ZwQueryVirtualMemory determina el estado de la primera página dentro de la región y, a continuación, examina las entradas posteriores del mapa de direcciones del proceso desde la dirección base hacia arriba hasta que se haya examinado todo el intervalo de páginas o hasta que se encuentre una página con un conjunto de atributos no coincidente. Se devuelven los atributos de región, la longitud de la región de las páginas con atributos coincidentes y un valor de estado adecuado.
Si toda la región de las páginas no tiene un conjunto coincidente de atributos, el valor del parámetro ReturnLength se puede usar para calcular la dirección y la longitud de la región de las páginas que no se han examinado.
NtQueryVirtualMemory y ZwQueryVirtualMemory son dos versiones de la misma rutina de Windows Native System Services.
En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx** y ZwXxx*** de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Plataforma de destino | Universal |
Encabezado | ntifs.h |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |