Fonction ZwFlushVirtualMemory (ntifs.h)

La routine ZwFlushVirtualMemory vide une plage d’adresses virtuelles dans l’espace d’adressage virtuel d’un processus spécifié, qui mappent à un fichier de données en cas de modification.

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ésident les 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 virtuelles.

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.

Au 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 suivante de taille de page d’hôte par 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.

Au 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 du status d’E/S pour la dernière opération d’E/S tentée est stockée sur la sortie.

Valeur retournée

ZwFlushVirtualMemory retourne STATUS_SUCCESS ou une erreur status code. Les codes de status d’erreur possibles incluent les éléments suivants :

Code de retour Description
STATUS_ACCESS_DENIED Le paramètre ProcessHandle spécifié n’était pas un handle de processus valide.
STATUS_INSUFFICIENT_RESOURCES Les ressources supplémentaires requises par cette fonction n’étaient pas disponibles.
STATUS_INVALID_PARAMETER_2 L’adresse BaseAddress spécifiée était une adresse non valide dans l’espace d’adressage virtuel ou la valeur 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 n’a pu être localisé pour le BaseAddress fourni.
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 dans la mémoire virtuelle qui mappe un fichier de données. Si une mémoire de cette plage a été modifiée depuis que le fichier a été copié dans la 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.

Notes

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 dans 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 Utilisation des versions Nt et Zw des routines des services système natifs.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

ZwAllocateVirtualMemory