Fonction FltFlushBuffers2 (fltkernel.h)

Un pilote de minifiltre appelle FltFlushBuffers2 pour envoyer une demande de vidage au système de fichiers pour un fichier donné.

Syntaxe

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

Paramètres

Instance

[in] Pointeur de instance opaque pour le instance du pilote minifiltre appelant. Ce paramètre est obligatoire et ne peut pas être NULL.

FileObject

[in] Pointeur d’objet de fichier pour le fichier ou le volume à vider. Ce paramètre est obligatoire et ne peut pas être NULL.

FlushType

[in] Spécifie le type de vidage que le système de fichiers doit effectuer sur le fichier. FlushType peut être l’un des éléments suivants :

Valeur de l’opération FlushType Description
0 Si FileObject est destiné à un fichier, les données et les métadonnées du fichier dans le cache de fichiers seront écrites, et le stockage sous-jacent sera synchronisé pour vider son cache. Si FileObject concerne un volume, le système de fichiers entraîne l’écriture des données et métadonnées de tous les fichiers modifiés sur le volume, et la synchronisation du stockage sous-jacent pour vider son cache. Cette opération équivaut à FltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE Identique à 0 (FltFlushBuffers), sauf que le cache est également vidé une fois le vidage terminé.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Si le fichier se trouve sur un système de fichiers NTFS, seules les données de fichier dans le cache de fichiers sont écrites. Aucune métadonnées n’est écrite et le stockage sous-jacent n’est pas synchronisé pour vider son cache. Cet indicateur n’est pas valide si FileObject concerne un volume.
FLT_FLUSH_TYPE_NO_SYNC Si le fichier se trouve sur un système de fichiers NTFS, les données et métadonnées du fichier dans le cache de fichiers sont écrites. Le stockage sous-jacent n’est pas synchronisé pour vider son cache. Cet indicateur n’est pas valide si FileObject concerne un volume.
FLT_FLUSH_TYPE_DATA_SYNC_ONLY Si le fichier se trouve sur un système de fichiers NTFS, les données de fichier dans le cache de fichiers sont écrites. Aucune métadonnées n’est écrite. Le stockage sous-jacent est synchronisé pour vider son cache. Cet indicateur n’est pas valide si FileObject concerne un volume ou un répertoire.

CallbackData

[in/optional] Pointeur vers la structure facultative FLT_CALLBACK_DATA utilisée pour propager l’extension IRP de l’appelant. Consultez FltPropagateIrpExtension.

Valeur retournée

FltFlushBuffers2 retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_MEDIA_WRITE_PROTECTED Le fichier réside sur un volume protégé en écriture. Il s’agit d’un code d’erreur.
STATUS_VOLUME_DISMOUNTED Le fichier réside sur un volume qui n’est pas monté actuellement. Il s’agit d’un code d’erreur.

Remarques

Un pilote de minifiltre peut appeler FltFlushBuffers2 pour émettre une requête IRP_MJ_FLUSH_BUFFERS au système de fichiers pour un fichier donné. L’opération de vidage est synchrone et est émise aux instance sous l’instance spécifiée.

Si le fichier se trouve sur un système de fichiers NTFS, le minifiltre peut contrôler le type de vidage via le paramètre FlushType .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1903
En-tête fltkernel.h

Voir aussi

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS