CcCoherencyFlushAndPurgeCache-Funktion (ntifs.h)
Die CcCoherencyFlushAndPurgeCache-Routine leert den Cache oder leert und löscht den Cache, um die Cachekohärenz sicherzustellen.
Syntax
void CcCoherencyFlushAndPurgeCache(
[in] PSECTION_OBJECT_POINTERS SectionObjectPointer,
[in, optional] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[out] PIO_STATUS_BLOCK IoStatus,
[in, optional] ULONG Flags
);
Parameter
[in] SectionObjectPointer
Ein Zeiger auf eine SECTION_OBJECT_POINTERS-Struktur , die die Abschnittsobjektzeiger des Dateiobjekts enthält.
[in, optional] FileOffset
Ein Zeiger auf eine Variable, die den anfangs zu leerenden Byteoffset oder zum Leeren und Bereinigen angibt.
[in] Length
Die Länge der Daten, die geleert oder geleert und gelöscht werden sollen, beginnend bei FileOffset. Dieser Parameter wird ignoriert, wenn ein NULL-Zeiger an FileOffset übergeben wird.
[out] IoStatus
Ein Zeiger auf eine vom Aufrufer zugewiesene IO_STATUS_BLOCK-Struktur, die die endgültige Abschluss-status und Informationen zum Vorgang empfängt.
[in, optional] Flags
Eine Bitmaske der folgenden Flags, die angibt, wie der Vorgang ausgeführt werden soll:
Wert | Bedeutung |
---|---|
CC_FLUSH_AND_PURGE_NO_PURGE | Leeren Sie den Cache, aber löschen Sie den Cache nicht. Dies ist nützlich für Lesekohärenzleerungen. |
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS | Reserviert für die Systemnutzung; nicht verwenden. |
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN | Der Aufrufer kann dieses Flag festlegen, wenn keine Zuordnungen zur Datei außerhalb des Cache-Managers vorhanden sind, um den teuren Vorgang des Kürzens von Arbeitssätzen zu überspringen. |
Rückgabewert
Keine
Bemerkungen
Verwenden Sie nach Möglichkeit CcCoherencyFlushAndPurgeCache anstelle einer expliziten Leerungs- und Bereinigungsaufrufsequenz, da benutzerseitig zugeordnete Ansichten ungültig werden, um Datenbeschädigungen zu verhindern. CcCoherencyFlushAndPurgeCache stellt die Cachekohärenz sicher. daher gibt es keine Option, eine Bereinigung nur über diese Funktion zu durchführen.
Die Datei muss ausschließlich abgerufen werden, bevor Sie CcCoherencyFlushAndPurgeCache aufrufen.
Sie können jeden Bytebereich innerhalb einer Datei mit den Parametern FileOffset und Length leeren oder leeren und bereinigen. Oder Sie können eine gesamte Datei leeren oder leeren und bereinigen, wenn Sie einen NULL-Zeiger an den FileOffset-Parameter übergeben.
Bei einem Aufruf von CcCoherencyFlushAndPurgeCache handelt es sich um einen synchronen (blockierenden) Vorgang, nicht um einen asynchronen (nicht blockierenden) Vorgang.
Der IoStatus-Status-Wert> STATUS_CACHE_PAGE_LOCKED gibt an, dass die Seitenvalidierung fehlgeschlagen ist. Beachten Sie, dass die Seitenvalidierung auch dann fehlschlagen kann, wenn Sie CC_FLUSH_AND_PURGE_NO_PURGE im Flags-Parameter übergeben. Beachten Sie, dass STATUS_CACHE_PAGE_LOCKED eine erfolgreiche status ist (d. a. das Testen mit dem NT_SUCCESS Makro würde TRUE zurückgeben).
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 |
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h, FltKernel.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |