FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)

Der Filter-Manager verwendet den FSCTL_SET_PURGE_FAILURE_MODE Steuercode, um Vorgänge während der Lebensdauer eines Abschnitts zu synchronisieren, der für die Datenüberprüfung erstellt wurde. Filter sollten diesen Steuerelementcode niemals ausgeben.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Eine SET_PURGE_FAILURE_MODE_INPUT-Struktur .

Länge des Eingabepuffers

Größe in Byte der SET_PURGE_FAILURE_MODE_INPUT.

Ausgabepuffer

Keine

Länge des Ausgabepuffers

Eingabe-/Ausgabepuffer

Keine

Länge des Eingabe-/Ausgabepuffers

Statusblock

Ist für das System reserviert.

Hinweise

Der Filter-Manager verwendet diesen Steuerelementcode mit IRP_MJ_FILE_SYSTEM_CONTROL Aufrufen, um die Lebensdauer des Abschnitts in Klammern zu klammern. Diese Aufrufe dienen dazu, ein Dateisystem (und selten Minifilter) anzuweisen, sich wie folgt zu verhalten, wenn die Cache-Manager-Caches nicht gelöscht werden können.

Für jede mit SET_PURGE_FAILURE_MODE_ENABLED Satz ausgestellte FSCTL_SET_PURGE_FAILURE_MODE wird ein FSCTL_SET_PURGE_FAILURE_MODE mit dem SET_PURGE_FAILURE_MODE_DISABLED-Satz ausgegeben. Während ein ausstehender SET_PURGE_FAILURE_MODE_ENABLED vorhanden ist, antwortet der Filter-Manager wie folgt auf bestimmte Fehlerstatus für bestimmte Arten von Vorgängen (siehe folgende Tabelle):

• Pendiert den Vorgang und beschleunigt das Schließen des Abschnitts (sofern möglich) • Warteschlange des Vorgangs an den Minifilter oder das Dateisystem, das den Fehler ausgegeben hat

Damit der Filter-Manager entsprechend reagiert, reagiert das Dateisystem (oder filter) auf einen Fehler beim Bereinigen eines Abschnitts auf folgende Weise:

Vorgang Erforderliche Rückgabe status
IRP_MJ_CREATE (destruktive Vorgänge) STATUS_USER_MAPPED_FILE
IRP_MJ_WRITE (nur ungepufferte Vorgänge) STATUS_PURGE_FAILED
IRP_MJ_SET_INFORMATION STATUS_PURGE_FAILED

Diese Status sollten nur zurückgegeben werden, wenn ein ausstehender SET_PURGE_FAILURE_MODE_ENABLED vorhanden ist (kein Ausgleich SET_PURGE_FAILURE_MODE_DISABLED empfangen). In allen anderen Fällen werden Fehlerstatus an die Anwendung zurückgegeben.

Wenn das Dateisystem (oder der Filter) bei jedem anderen Vorgang (für instance einen zwischengespeicherten Schreibvorgang) nicht löscht, während ein FSCTL_SET_PURGE_FAILURE_MODE aussteht, ist es dafür verantwortlich, den Vorgang auszuhalten und erneut auszuführen, wenn die Anzahl der ausstehenden FSCTL_SET_PURGE_FAILURE_MODE auf Null sinkt. Wenn das Dateisystem (oder der Filter) nur einen Fehler status zurückgibt (einschließlich der oben aufgeführten), wird dieser status an die Anwendung zurückgegeben.

Der Fehler status wird vollständig im Filter-Manager verarbeitet, ebenso wie die erneute Warteschlange des fehlgeschlagenen Vorgangs. Dies bedeutet, dass keines von beiden für Filter sichtbar ist, was die folgenden wichtigen Auswirkungen hat:

  • Dateisystemüberwachungstools wie der Prozessmonitor melden diese Vorgänge nicht.
  • Wenn ein oberer Filter einbezogen werden muss, damit der erneut ausgestellte Vorgang erfolgreich ist, schlägt der vorgang fehl. In diesem Fall sind Filterschreiber erforderlich, um sicherzustellen, dass dieser zweite Filter den Fehler status zurückgibt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Kopfzeile ntifs.h

Weitere Informationen

SET_PURGE_FAILURE_MODE_INPUT