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 |