Función ZwFlushVirtualMemory (ntifs.h)

La rutina ZwFlushVirtualMemory 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 del 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 la devolución, 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 al siguiente límite de tamaño de página host por zwflushVirtualMemory. Si este valor se especifica como cero, se vacía el intervalo asignado de la dirección base al final del intervalo.

En la devolución, 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 posibles códigos de estado de error 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 La baseAddress especificada era una dirección no válida dentro del espacio de direcciones virtuales o RegionSize no era válida.
STATUS_INVALID_HANDLE El parámetro ProcessHandle especificado no era un identificador de proceso válido.
STATUS_NOT_MAPPED_VIEW No se pudo encontrar ningún descriptor de espacio de direcciones virtual para la baseaddress proporcionada.
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.

Comentarios

Esta rutina acepta, como parámetros de entrada, un intervalo de direcciones en memoria virtual que asigna 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 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 XP
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

ZwAllocateVirtualMemory