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 |