Partager via


Fonction CcCoherencyFlushAndPurgeCache (ntifs.h)

La routine CcCoherencyFlushAndPurgeCache vide ou vide le cache pour garantir la cohérence du cache.

Syntaxe

void CcCoherencyFlushAndPurgeCache(
  [in]           PSECTION_OBJECT_POINTERS SectionObjectPointer,
  [in, optional] PLARGE_INTEGER           FileOffset,
  [in]           ULONG                    Length,
  [out]          PIO_STATUS_BLOCK         IoStatus,
  [in, optional] ULONG                    Flags
);

Paramètres

[in] SectionObjectPointer

Pointeur vers une structure de SECTION_OBJECT_POINTERS qui contient les pointeurs de l’objet de section de l’objet fichier.

[in, optional] FileOffset

Pointeur vers une variable qui spécifie le décalage d’octet de départ à vider ou à vider et purger.

[in] Length

Longueur en octets des données à vider ou à vider et purger, à partir de FileOffset. Ce paramètre est ignoré si un pointeur NULL est passé à FileOffset.

[out] IoStatus

Pointeur vers une structure de IO_STATUS_BLOCK allouée à l’appelant qui reçoit la status d’achèvement finale et des informations sur l’opération.

[in, optional] Flags

Masque de bits des indicateurs suivants qui spécifient la façon dont l’opération doit être effectuée :

Valeur Signification
CC_FLUSH_AND_PURGE_NO_PURGE Videz, mais ne videz pas le cache. Cela est utile pour les vidages de cohérence en lecture.
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS Réservé à l’utilisation du système ; n’utilisez pas.
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN L’appelant peut définir cet indicateur lorsqu’il n’y a pas de mappages au fichier en dehors du gestionnaire de cache, afin d’ignorer l’opération coûteuse de découpage des ensembles de travail de processus.

Valeur de retour

None

Remarques

Utilisez CcCoherencyFlushAndPurgeCache dans la mesure du possible au lieu d’une séquence d’appels de vidage et de purge explicite, car cela invalidera les vues mappées par l’utilisateur pour empêcher l’altération des données. CcCoherencyFlushAndPurgeCache garantit la cohérence du cache ; par conséquent, il n’y a pas d’option permettant d’effectuer une purge uniquement via cette fonction.

Le fichier doit être acquis exclusivement avant d’appeler CcCoherencyFlushAndPurgeCache.

Vous pouvez vider ou vider n’importe quelle plage d’octets d’un fichier à l’aide des paramètres FileOffset et Length . Vous pouvez également vider ou vider un fichier entier si vous passez un pointeur NULL au paramètre FileOffset .

Un appel à CcCoherencyFlushAndPurgeCache est une opération synchrone (bloquante), et non une opération asynchrone (non bloquante).

Une valeur IoStatus-Status> de STATUS_CACHE_PAGE_LOCKED indique que l’invalidation de page a échoué. N’oubliez pas que l’invalidation de page peut échouer même si vous passez CC_FLUSH_AND_PURGE_NO_PURGE dans le paramètre Flags . Notez que STATUS_CACHE_PAGE_LOCKED est un status réussi (c’est-à-dire que le test avec la macro NT_SUCCESS retourne TRUE).

Configuration requise

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

Voir aussi

CcFlushCache

CcPurgeCacheSection