CcSetFileSizesEx-Funktion (ntifs.h)

Die CcSetFileSizesEx-Routine aktualisiert die Cachezuordnungen und das Abschnittsobjekt für eine zwischengespeicherte Datei, deren Größe sich geändert hat.

Syntax

NTSTATUS CcSetFileSizesEx(
  PFILE_OBJECT   FileObject,
  PCC_FILE_SIZES FileSizes
);

Parameter

FileObject

[in] Zeiger auf ein Dateiobjekt für die zwischengespeicherte Datei.

FileSizes

[in] Zeiger auf eine CC_FILE_SIZES-Struktur , die die neuen Dateigrößeninformationen enthält.

Rückgabewert

CcSetFileSizesEx gibt STATUS_SUCCESS zurück, wenn die Dateigröße erfolgreich geändert wurde und wenn eine Bereinigung erforderlich war, dass die Bereinigung erfolgreich war. Andernfalls wird ein nicht erfolgreicher NSTATUS-Code wie STATUS_INSUFFICIENT_RESOURCES zurückgegeben und eine status Ausnahme ausgelöst.

In Bezug auf das Auslösen einer status Ausnahme für Fehler:

  • Wenn der Vorgang dazu führt, dass CcSetFileSizesEx die Datei leert und/oder löscht, löst CcSetFileSizesEx keine Fehler aus. Es gibt nur den entsprechenden nicht erfolgreichen NTSTATUS-Code des Lösch- oder Löschvorgangs zurück.

  • Wenn der Vorgang bewirkt , dass CcSetFileSizesEx den Abschnitt erweitert, löst CcSetFileSizesEx bei jedem Fehler aus, der während dieser Erweiterung auftritt.

Hinweise

Dateisysteme müssen CcSetFileSizesEx aufrufen, um die Cache-Manager-Datenstrukturen zu aktualisieren, wenn eine der folgenden Änderungen an einer zwischengespeicherten Datei vorgenommen wird:

  • Die Zuordnungsgröße wird erhöht.

  • Die gültige Datenlänge wird verringert.

  • Die gültige Datenlänge wird durch einen nicht zwischengespeicherten E/A-Vorgang erhöht.

  • Die Dateigröße wird erhöht oder verringert.

Wenn der Vorgang bewirkt, dass CcSetFileSizesEx den Abschnitt erweitert und ein Fehler auftritt, löst CcSetFileSizesEx eine status Ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuordnungsfehler auftritt, löst CcSetFileSizesEx eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Daher sollte der Treiber den Aufruf von CcSetFileSizesEx in einer try-except- oder try-finally-Anweisung umschließen, um die Kontrolle zu erlangen, wenn ein Fehler auftritt.

Das Dateisystem muss sicherstellen, dass die Cachezuordnung gültig ist und für die Dauer dieses Aufrufs so bleibt.

Um eine Datei zwischenzuspeichern, verwenden Sie CcInitializeCacheMap.

Um die Größe der zwischengespeicherten Datei abzurufen, übergeben Sie FileObject an CcGetFileSizePointer.

Anforderungen

Anforderung Wert
Header ntifs.h

Weitere Informationen

CcInitializeCacheMap

CcSetCacheFileSizes