FsRtlChangeBackingFileObject-Funktion (ntifs.h)

Die FsRtlChangeBackingFileObject-Routine ersetzt das aktuelle Dateiobjekt durch ein neues Dateiobjekt.

Syntax

NTSTATUS FsRtlChangeBackingFileObject(
  PFILE_OBJECT              CurrentFileObject,
  PFILE_OBJECT              NewFileObject,
  FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
  ULONG                     Flags
);

Parameter

CurrentFileObject

[in, optional] Das aktuelle Dateiobjekt. Wenn CurrentFileObjectNULL ist, wird das aktuelle Dateiobjekt des Betriebssystems auf NewFileObject festgelegt. Wenn es nicht NULL ist, wird das Sicherungsdateiobjekt nur dann in NewFileObject geändert, wenn das aktuelle Sicherungsdateiobjekt des Betriebssystems diesem Wert entspricht. Wenn dieses Dateiobjekt nicht zum Stream gehört, schlägt der Vorgang fehl.

NewFileObject

[in] Das neue Dateiobjekt, auf das das Betriebssystem intern verweist und speichert.

ChangeBackingType

[in] Ein FSRTL_CHANGE_BACKING_TYPE Enumerationswert, der angibt, welche interne Struktur geändert werden soll, um auf NewFileObject zu verweisen.

Flags

[in] Reserviert für die zukünftige Verwendung.

Rückgabewert

Die FsRtlChangeBackingFileObject-Routine gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt FsRtlChangeBackingFileObject den entsprechenden Fehlercode zurück. Die folgende Tabelle enthält Fehlercodes, die FsRtlChangeBackingFileObject möglicherweise zurückgibt.

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER_2 Der Änderungsvorgang ist fehlgeschlagen, da das dateiobjekt, das NewFileObject angibt, nicht denselben Stream wie CurrentFileObject darstellt.
STATUS_INVALID_PARAMETER_3 Der Änderungsvorgang ist fehlgeschlagen, weil der Aufrufer in ChangeBackingType einen ungültigen Sicherungstyp angegeben hat.
STATUS_INVALID_PARAMETER_4 Fehler beim Änderungsvorgang, weil der Aufrufer in Flags einen ungültigen Wert angegeben hat.
STATUS_NOT_SUPPORTED Der Änderungsvorgang ist fehlgeschlagen, weil der Aufrufer das Dateiobjekt auf eine Weise abgerufen hat, die das nachfolgende Austauschen des Dateiobjekts nicht zulässt. Wenn der Aufrufer beispielsweise das Dateiobjekt mit einem Aufruf von CcGetFileObjectFromSectionPtrs abgerufen hat, ist es nicht sicher, das Dateiobjekt zu tauschen.

Hinweise

Die FsRtlChangeBackingFileObject-Routine ändert das Dateiobjekt für eines der folgenden:

  • Einer der Bildkontrollbereiche des Speicher-Managers für den Stream

  • Der Datenkontrollbereich des Speicher-Managers für den Stream

  • Die freigegebene Cachezuordnung des Cache-Managers für den Stream

Die FsRtlChangeBackingFileObject-Routine ist nicht synchron. Es verarbeitet die Anforderung für eine Änderung des Dateiobjekts und gibt sofort zurück. Der Cache-Manager und der Speicher-Manager synchronisieren die Änderung des Dateiobjekts und geben das alte Dateiobjekt erst frei, wenn alle unvollständigen Vorgänge abgeschlossen sind, die dem alten Dateiobjekt zugeordnet sind. Eine Rückgabe status von STATUS_SUCCESS aus FsRtlChangeBackingFileObject bedeutet nicht, dass das Betriebssystem das Dateiobjekt bereits geändert hat.

Nachdem FsRtlChangeBackingFileObject jedoch erfolgreich ausgeführt wurde, ordnet das Betriebssystem alle zukünftigen Vorgänge dem neuen Dateiobjekt zu.

Um das Dateiobjekt für mehr als einen Sicherungstyp zu ändern, muss der Aufrufer FsRtlChangeBackingFileObject mehrmals aufrufen, damit sich jeder Unterstützungstyp ändern kann.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Die FsRtlChangeBackingFileObject-Routine ist ab Windows Vista verfügbar.
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln PowerIrpDDis(wdm)

Weitere Informationen

FSRTL_CHANGE_BACKING_TYPE