CcCoherencyFlushAndPurgeCache, fonction (ntifs.h)

La routine CcCoherencyFlushAndPurgeCache vide ou vide et 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 SECTION_OBJECT_POINTERS qui contient les pointeurs d’objet 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 pour vider et vider.

[in] Length

Longueur en octets des données à vider ou vider, en commençant à FileOffset. Ce paramètre est ignoré si un pointeur NULL est passé à FileOffset.

[out] IoStatus

Pointeur vers une structure d’IO_STATUS_BLOCK allouée par l’appelant qui reçoit l’état d’achèvement final et les informations relatives à 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 le cache, 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’existe aucun mappage au fichier en dehors du gestionnaire de cache, afin d’ignorer l’opération coûteuse des jeux de travail de processus de découpage.

Valeur de retour

None

Remarques

Utilisez CcCoherencyFlushAndPurgeCache si possible au lieu d’une séquence d’appels de vidage et de vidage explicite, car elle 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’existe aucune 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 dans un fichier à l’aide des paramètres FileOffset et Length . Vous pouvez également vider ou vider un fichier entier si vous transmettez 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 la page a échoué. N’oubliez pas que l’invalidation de la page peut échouer même si vous passez CC_FLUSH_AND_PURGE_NO_PURGE dans le paramètre Indicateurs . Notez que STATUS_CACHE_PAGE_LOCKED est un état de réussite (autrement dit, le test avec la macro NT_SUCCESS retournerait TRUE).

Configuration requise

   
Client minimal pris en charge Disponible dans Windows 7 et versions ultérieures
Plateforme cible Universal
En-tête ntifs.h (include Ntifs.h, FltKernel.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

CcFlushCache

CcPurgeCacheSection