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 |