Compartir a través de


Función ZwFlushVirtualMemory (ntifs.h)

El ZwFlushVirtualMemory rutina vacía un intervalo de direcciones virtuales dentro del espacio de direcciones virtuales de un proceso especificado que se asigna a un archivo de datos de vuelta al archivo de datos si se han modificado.

Sintaxis

NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
  [in]      HANDLE           ProcessHandle,
  [in, out] PVOID            *BaseAddress,
  [in, out] PSIZE_T          RegionSize,
  [out]     PIO_STATUS_BLOCK IoStatus
);

Parámetros

[in] ProcessHandle

Identificador abierto para el proceso en cuyo contexto residen las páginas que se van a vaciar. Use la macro NtCurrentProcess, definida en Ntddk.h, para especificar el proceso actual.

[in, out] BaseAddress

Puntero a la dirección base del intervalo de direcciones virtuales.

En la entrada, este parámetro especifica un puntero al valor inicial de la dirección base de la región de páginas que se va a vaciar.

A cambio, este parámetro proporciona un puntero a una variable que recibirá la dirección base de la región vacía.

[in, out] RegionSize

Tamaño, en bytes, del intervalo de direcciones virtuales.

En la entrada, este parámetro especifica un puntero al valor inicial del tamaño en bytes de la región de páginas que se va a vaciar en el disco. Este argumento se redondea hasta el siguiente límite de tamaño de página host por el ZwFlushVirtualMemory. Si este valor se especifica como cero, se vacía el intervalo asignado desde la dirección base hasta el final del intervalo.

A cambio, este parámetro especifica un puntero a una variable que recibirá el tamaño real en bytes de la región vacía de páginas.

[out] IoStatus

Puntero a una estructura IO_STATUS_BLOCK. Esta estructura es donde el valor del estado de E/S para la última operación de E/S intentada se almacena en la salida.

Valor devuelto

ZwFlushVirtualMemory devuelve STATUS_SUCCESS o un código de estado de error. Entre los códigos de estado de error posibles se incluyen los siguientes:

Código devuelto Descripción
STATUS_ACCESS_DENIED El parámetro ProcessHandle especificado no era un identificador de proceso válido.
STATUS_INSUFFICIENT_RESOURCES No había recursos adicionales necesarios para esta función.
STATUS_INVALID_PARAMETER_2 El BaseAddress especificado era una dirección no válida dentro del espacio de direcciones virtuales o el RegionSize de no era válido.
STATUS_INVALID_HANDLE El parámetro ProcessHandle especificado no era un identificador de proceso válido.
STATUS_NOT_MAPPED_VIEW No se puede encontrar ningún descriptor de espacio de direcciones virtual para el BaseAddress proporcionado.
STATUS_PROCESS_IS_TERMINATING Se eliminó el proceso y el espacio de direcciones virtuales asociado.
STATUS_FILE_LOCK_CONFLICT El sistema de archivos encontró un conflicto de bloqueo.

Observaciones

Esta rutina acepta, como parámetros de entrada, un intervalo de direcciones en memoria virtual que asignan un archivo de datos. Si se ha modificado alguna memoria de este intervalo desde que se copió el archivo en la memoria, la rutina vuelve a vaciar esta memoria en el archivo de datos.

Para obtener más información sobre la compatibilidad con la administración de memoria para controladores en modo kernel, consulte Administración de memoria para controladores de Windows.

Nota

Si la llamada a la función ZwFlushVirtualMemory se produce en modo de usuario, debe usar el nombre "NtFlushVirtualMemory" en lugar de "ZwFlushVirtualMemory".

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 XP
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL

Consulte también

ZwAllocateVirtualMemory