CcInitializeCacheMap-Funktion (ntifs.h)
Dateisysteme rufen die CcInitializeCacheMap Routine auf, um eine Datei zwischenzuspeichern.
Syntax
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
Parameter
[in] FileObject
Zeigen Sie auf ein Dateiobjekt für die Datei.
[in] FileSizes
Zeiger auf eine CC_FILE_SIZES Struktur, die AllocationSize, FileSizeund ValidDataLength- für die Datei enthält. Diese Struktur ist wie folgt definiert:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
Mitglied | Bedeutung |
---|---|
AllocationSize- | Größe des neuen Abschnittsobjekts für die Datei. Wird ignoriert, wenn kleiner oder gleich der aktuellen Abschnittsgröße ist. |
FileSize- | Neue Dateigröße für die Datei. |
ValidDataLength- | Neue gültige Datenlänge für die Datei. |
[in] PinAccess
Auf TRUE- festgelegt, wenn CcPin-Xxx--Routinen in der Datei verwendet werden.
[in] Callbacks
Zeiger auf eine Struktur, die aus einem nicht seitengebundenen Pool zugeordnet ist, mit Einstiegspunkten von vom Aufrufer bereitgestellten Lese-/Vor-/Schreibzugriffsroutinen. Diese Struktur und ihre Member sind wie folgt definiert:
typedef struct _CACHE_MANAGER_CALLBACKS {
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
IN PVOID Context
);
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
IN PVOID Context
);
[in] LazyWriteContext
Zeiger auf Kontextinformationen, die an die in Callbacksangegebenen Rückrufroutinen übergeben werden sollen.
Rückgabewert
Nichts
Bemerkungen
CcInitializeCacheMap erstellt die für das Zwischenspeichern von Dateidaten erforderlichen Datenstrukturen.
Wenn ein Fehler auftritt, löst CcInitializeCacheMap eine Status ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuordnungsfehler auftritt, löst CcInitializeCacheMap eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Um die Kontrolle zu erlangen, wenn ein Fehler auftritt, sollte der Treiber den Aufruf von CcInitializeCacheMap in einem try-except oder try-finally-Anweisung umschließen.
Dateisysteme müssen CcInitializeCacheMap- aufrufen, um eine Datei zwischenzuspeichern, bevor sie andere Cache-Manager-Routinen für die Datei verwenden, es sei denn, die Datei wurde mit deaktivierter Datenzwischenspeicherung erstellt. In den meisten Dateisystemen ist das Zwischenspeichern von Dateien standardmäßig aktiviert, kann jedoch deaktiviert werden, indem das FILE_NO_INTERMEDIATE_BUFFERING Flag auf TRUE- in den Dateierstellungsoptionen festgelegt wird.
Nach dem Aufrufen CcInitializeCacheMapkann das Dateisystem CcSetAdditionalCacheAttributes aufrufen, um lese- oder schreibbehind zu deaktivieren, falls gewünscht.
Beim Schließen einer Datei muss jedes Dateisystem, das die Dateizwischenspeicherung unterstützt, CcUninitializeCacheMap- für diese Datei aufrufen, unabhängig davon, ob die Datei zwischengespeichert ist oder nicht. Auch wenn die Datei mit deaktivierter Zwischenspeicherung erstellt wurde, muss das Dateisystem weiterhin CcUninitializeCacheMapaufrufen.
Das CcIsFileCached- Makro bestimmt, ob eine Datei zwischengespeichert wird oder nicht.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Parameter
FileObject[in] [in]
Zeigen Sie auf ein Dateiobjekt für die Datei.
Rückgabewert
Gibt TRUE zurück, wenn die Datei zwischengespeichert wird, andernfalls FALSE.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |