Freigeben über


FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)

Der Filter-Manager verwendet den FSCTL_SET_PURGE_FAILURE_MODE Steuerelementcode, um Vorgänge während der Lebensdauer eines Abschnitts zu synchronisieren, der für Datenscanerstellt wurde. Filter sollten diesen Steuerelementcode niemals ausstellen.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Eine SET_PURGE_FAILURE_MODE_INPUT Struktur.

Eingabepufferlänge

Größe in Byte von SET_PURGE_FAILURE_MODE_INPUT.

Ausgabepuffer

Nichts

Länge des Ausgabepuffers

n/a

Eingabe-/Ausgabepuffer

Nichts

Länge des Eingabe-/Ausgabepuffers

n/a

Statusblock

Reserviert für die Systemverwendung.

Bemerkungen

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

Für jedes 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 ausgestellt. Während es eine ausstehende SET_PURGE_FAILURE_MODE_ENABLED gibt, reagiert der Filter-Manager wie folgt auf bestimmte Fehlerstatus für bestimmte Arten von Vorgängen (siehe nachstehende Tabelle):

  • Pends the operation, expediting the close of the section (where possible).
  • Stellt den Vorgang auf den Minifilter oder das Dateisystem zurück, der den Fehler ausgegeben hat.

Um den Filter-Manager so auszulösen, dass er entsprechend reagiert, reagiert das Dateisystem (oder Filter) auf einen Fehler beim Löschen eines Abschnitts auf folgende Weise:

Operation Erforderlicher Rückgabestatus
IRP_MJ_CREATE (destruktive Vorgänge) STATUS_USER_MAPPED_FILE
IRP_MJ_WRITE (nur nicht abgegrenzte Vorgänge) STATUS_PURGE_FAILED
IRP_MJ_SET_INFORMATION STATUS_PURGE_FAILED

Diese Status sollten nur zurückgegeben werden, wenn eine ausstehende 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.

Bei einem anderen Vorgang (z. B. einem zwischengespeicherten Schreibvorgang) kann ein Abschnitt nicht gelöscht werden, während ein FSCTL_SET_PURGE_FAILURE_MODE aussteht, ist er für das Ausstehen des Vorgangs verantwortlich und wird erneut ausgegeben, wenn die Anzahl der ausstehenden FSCTL_SET_PURGE_FAILURE_MODE auf Null fällt. Wenn das Dateisystem (oder filter) nur einen Fehlerstatus (einschließlich der oben aufgeführten) zurückgibt, wird dieser Status an die Anwendung zurückgegeben.

Der Fehlerstatus wird vollständig innerhalb des Filter-Managers verarbeitet, ebenso wie die erneute Queuierung des fehlgeschlagenen Vorgangs. Dies bedeutet, dass keines für Filter sichtbar ist, was die folgenden wichtigen Auswirkungen hat:

  • Dateisystemüberwachungstools wie Prozessüberwachung melden diese Vorgänge nicht.
  • Wenn ein oberer Filter erforderlich ist, damit der erneut ausgestellte Vorgang erfolgreich ausgeführt werden kann, schlägt der erneut abgefragte Vorgang fehl. In dieser Situation sind Filterautoren erforderlich, um sicherzustellen, dass dieser zweite Filter den Fehlerstatus zurückgibt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8
Header- ntifs.h

Siehe auch

SET_PURGE_FAILURE_MODE_INPUT