Partager via


ZwFlushVirtualMemory, fonction (ntifs.h)

Le ZwFlushVirtualMemory routine vide une plage d’adresses virtuelles dans l’espace d’adressage virtuel d’un processus spécifié qui mappe à un fichier de données de retour au fichier de données s’ils ont été modifiés.

Syntaxe

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

Paramètres

[in] ProcessHandle

Handle ouvert pour le processus dans lequel résider le contexte des pages à vider. Utilisez la macro NtCurrentProcess, définie dans Ntddk.h, pour spécifier le processus actuel.

[in, out] BaseAddress

Pointeur vers l’adresse de base de la plage d’adresses virtuelle.

Lors de l’entrée, ce paramètre spécifie un pointeur vers la valeur initiale de l’adresse de base de la région de pages à vider.

Lors du retour, ce paramètre fournit un pointeur vers une variable qui recevra l’adresse de base de la région vidée.

[in, out] RegionSize

Taille, en octets, de la plage d’adresses virtuelles.

Lors de l’entrée, ce paramètre spécifie un pointeur vers la valeur initiale de la taille en octets de la région de pages à vider sur le disque. Cet argument est arrondi à la limite de taille de page hôte suivante par la ZwFlushVirtualMemory. Si cette valeur est spécifiée comme zéro, la plage mappée de l’adresse de base à la fin de la plage est vidée.

Lors du retour, ce paramètre spécifie un pointeur vers une variable qui recevra la taille réelle en octets de la région vidée des pages.

[out] IoStatus

Pointeur vers une structure IO_STATUS_BLOCK. Cette structure est l’endroit où la valeur de l’état d’E/S pour la dernière opération d’E/S tentée est stockée sur la sortie.

Valeur de retour

ZwFlushVirtualMemory retourne STATUS_SUCCESS ou un code d’état d’erreur. Les codes d’état d’erreur possibles sont les suivants :

Retourner le code Description
STATUS_ACCESS_DENIED Le paramètre ProcessHandle spécifié n’était pas un handle de processus valide.
STATUS_INSUFFICIENT_RESOURCES Des ressources supplémentaires requises par cette fonction n’étaient pas disponibles.
STATUS_INVALID_PARAMETER_2 La BaseAddress spécifiée était une adresse non valide dans l’espace d’adressage virtuel ou le RegionSize n’était pas valide.
STATUS_INVALID_HANDLE Le paramètre ProcessHandle spécifié n’était pas un handle de processus valide.
STATUS_NOT_MAPPED_VIEW Aucun descripteur d’espace d’adressage virtuel ne peut être localisé pour le BaseAddressfourni.
STATUS_PROCESS_IS_TERMINATING Le processus et l’espace d’adressage virtuel associé ont été supprimés.
STATUS_FILE_LOCK_CONFLICT Le système de fichiers a rencontré un conflit de verrouillage.

Remarques

Cette routine accepte, en tant que paramètres d’entrée, une plage d’adresses en mémoire virtuelle qui mappent un fichier de données. Si une mémoire de cette plage a été modifiée depuis que le fichier a été copié en mémoire, la routine vide cette mémoire dans le fichier de données.

Pour plus d’informations sur la prise en charge de la gestion de la mémoire pour les pilotes en mode noyau, consultez Gestion de la mémoire pour les pilotes Windows.

Note

Si l’appel à la fonction ZwFlushVirtualMemory se produit en mode utilisateur, vous devez utiliser le nom «NtFlushVirtualMemory» au lieu de «ZwFlushVirtualMemory».

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 de 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 Using Nt and Zw Versions of the Native System Services Routines.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

ZwAllocateVirtualMemory