Partager via


CcCoherencyFlushAndPurgeCache, fonction (ntifs.h)

Les CcCoherencyFlushAndPurgeCache vidages et purges de routine, 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 de section de l’objet fichier.

[in, optional] FileOffset

Pointeur vers une variable qui spécifie le décalage d’octet de départ pour vider ou 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 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 de découpage ensembles de travail de processus.

Valeur de retour

Aucun

Remarques

Utilisez CcCoherencyFlushAndPurgeCache lorsque c’est possible au lieu d’une séquence d’appel de vidage et de vidage explicite, car elle invalidera les vues mappées par l’utilisateur pour empêcher toute altération des données. CcCoherencyFlushAndPurgeCache garantit la cohérence du cache ; par conséquent, il n’existe aucune option pour 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 de . Notez que STATUS_CACHE_PAGE_LOCKED est un état de réussite (c’est-à-dire, le test avec la macro NT_SUCCESS retournerait TRUE).

Exigences

Exigence Valeur
client minimum pris en charge Windows 7
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h, FltKernel.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

CcFlushCache

CcPurgeCacheSection