Función NtQueryVirtualMemory (ntifs.h)
La rutina NtQueryVirtualMemory determina el estado, la protección y el tipo de una región de páginas dentro del espacio de direcciones virtuales del proceso especificado.
Sintaxis
__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
);
Parámetros
[in] ProcessHandle
Identificador del proceso en cuyo contexto residen las páginas que se van a consultar. Use la macro NtCurrentProcess 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 host-page-address.
[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
[in] MemoryInformationLength
Especifica la longitud, en bytes, del búfer al que apunta MemoryInformation.
[out, optional] ReturnLength
Puntero opcional que, si se especifica, recibe el número de bytes colocados en el búfer de MemoryInformation.
Valor devuelto
Devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Si se produce un error en la llamada, los códigos de error posibles incluyen lo siguiente:
Código devuelto | Descripción |
---|---|
STATUS_ACCESS_DENIED | El autor de la llamada no tenía derechos de acceso suficientes para realizar la acción solicitada. |
STATUS_ACCESS_VIOLATION | La dirección base especificada es una dirección virtual no válida. |
STATUS_INFO_LENGTH_MISMATCH | El búfer de MemoryInformation es mayor que MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | El parámetro MemoryInformationClass especificado no es válido. |
STATUS_INVALID_PARAMETER | La dirección base especificada está fuera del intervalo de direcciones accesibles. |
Observaciones
ZwQueryVirtualMemory determina el estado de la primera página dentro de la región y, a continuación, examina las entradas posteriores en el 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 no coincidente de atributos. Se devuelven los atributos de región, la longitud de la región de 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, se devolverán individualmente las subregiones dentro de una reserva de direcciones. Tendrán el mismo valor *MemoryInformation.AllocationBase, sus tamaños individuales estarán en *MemoryInformation.RegionSizey el tamaño total de la reserva de direcciones se puede obtener sumando todos los valores de *MemoryInformation.RegionSize asociados a un valor determinado *MemoryInformation.AllocationBase.
NtQueryVirtualMemory y ZwQueryVirtualMemory son dos versiones de la misma rutina de Servicios del sistema nativo de Windows.
En el caso de las llamadas desde controladores en modo kernel, las NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows 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 de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 |
de la plataforma de destino de |
Universal |
encabezado de |
ntifs.h |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |