Share via


MARK_HANDLE_INFO-Struktur (winioctl.h)

Enthält Informationen, die verwendet werden, um eine angegebene Datei oder ein angegebenes Verzeichnis zu markieren, und den Änderungsjournaldatensatz für eine Updatesequenznummer (USN) mit Daten zu Änderungen. Sie wird vom FSCTL_MARK_HANDLE-Steuerelementcode verwendet.

Syntax

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

Member

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Der Typ der vorgenommenen Änderungen.

Der Vorgang ändert die Datei oder das Verzeichnis nicht extern aus sicht der Anwendung, von der sie erstellt wurde.

Wenn ein Thread einen neuen USN-Datensatz schreibt, sind die Quellinformationsflags im vorherigen Datensatz nur dann weiterhin vorhanden, wenn der Thread auch diese Flags festlegt. Daher ermöglicht die Quellinformationsstruktur Anwendungen, USN-Datensätze herauszufiltern, die nur von einer bekannten Quelle festgelegt werden, z. B. einem Antivirenfilter.

Die folgenden Werte werden definiert.

Wert Bedeutung
USN_SOURCE_DATA_MANAGEMENT
0x00000001
Der Vorgang stellt Informationen zu einer Änderung der Datei oder des Verzeichnisses bereit, die vom Betriebssystem vorgenommen wurde.

Eine typische Verwendung ist, wenn Remotespeicher Daten aus externem Speicher in den lokalen Speicher verschiebt. Remotespeicher ist die hierarchische Speicherverwaltungssoftware. Eine solche Verschiebung fügt in der Regel mindestens das USN_REASON_DATA_OVERWRITE-Flag einem USN-Datensatz hinzu. Die Daten haben sich jedoch aus Sicht des Benutzers nicht geändert. Durch Notieren USN_SOURCE_DATA_MANAGEMENT im SourceInfo-Member der USN_RECORD-Struktur , die den Datensatz enthält, können Sie feststellen, dass sich die Daten nicht geändert haben, obwohl ein Schreibvorgang für das Element ausgeführt wird.

USN_SOURCE_AUXILIARY_DATA
0x00000002
Der Vorgang fügt einer Datei oder einem Verzeichnis einen privaten Datenstrom hinzu.

Ein Beispiel könnte ein Virusdetektor sein, der Prüfsummeninformationen hinzufügt. Wenn der Virusdetektor das Element ändert, generiert das System USN-Datensätze. USN_SOURCE_AUXILIARY_DATA gibt an, dass die Änderungen die Anwendungsdaten nicht geändert haben.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
Der Vorgang erstellt oder aktualisiert den Inhalt einer replizierten Datei.

Beispielsweise legt der Dateireplikationsdienst dieses Flag fest, wenn er eine Datei in einem replizierten Verzeichnis erstellt oder aktualisiert.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
Die Replikation wird auf Clientsystemen entweder aus der Cloud oder von Servern ausgeführt.

VolumeHandle

Das Volumehandle für das Volume, in dem sich die Datei oder das Verzeichnis befindet. Weitere Informationen zum Abrufen eines Volumehandles finden Sie im Abschnitt Hinweise.

Dieses Handle ist erforderlich, um die Berechtigungen für diesen Vorgang zu überprüfen.

Der Aufrufer muss über das SE_MANAGE_VOLUME_NAME-Recht verfügen. Weitere Informationen finden Sie unter Berechtigungen.

HandleInfo

Das Flag, das zusätzliche Informationen zu der Datei oder dem Verzeichnis angibt, die durch den Handle-Wert im VolumeHandle-Member identifiziert werden.

Wert Bedeutung
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
Die Datei wird als nicht defragmentiert markiert, bis das Handle geschlossen wird.

Sobald ein MARK_HANDLE_PROTECT_CLUSTERS markiertes Handle geschlossen wurde, gibt es keine Garantie, dass die Cluster der Datei nicht verschoben werden.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
Die Datei wird als nicht defragmentiert markiert, bis das Handle geschlossen wird.

Windows Server 2003: Dieses Flag wird erst unter Windows Server 2003 mit SP1 unterstützt.

Windows XP: Dieses Flag wird nicht unterstützt.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
Die Datei wird als nicht defragmentiert markiert, bis das Handle geschlossen wird.

Windows Server 2003: Dieses Flag wird erst unter Windows Server 2003 mit SP1 unterstützt.

Windows XP: Dieses Flag wird nicht unterstützt.

MARK_HANDLE_REALTIME
0x00000020
Die Datei ist unabhängig vom tatsächlichen Dateityp für das Echtzeitleseverhalten gekennzeichnet. Dateien, die mit diesem Flag gekennzeichnet sind, müssen für nicht gepufferte E/A-Vorgänge geöffnet werden.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieses Flag wird nicht unterstützt.

MARK_HANDLE_NOT_REALTIME
0x00000040
Die Datei, die zuvor mit dem MARK_HANDLE_REALTIME-Flag für Echtzeitleseverhalten markiert wurde, kann mithilfe dieses Flags deaktiviert werden, wodurch das Echtzeitverhalten entfernt wird. Dateien, die mit diesem Flag gekennzeichnet sind, müssen für nicht gepufferte E/A-Vorgänge geöffnet werden.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieses Flag wird nicht unterstützt.

MARK_HANDLE_READ_COPY
0x00000080
Gibt die im CopyNumber-Member angegebene Kopiernummer an, die für Lesevorgänge verwendet werden soll. Dateien, die mit diesem Flag gekennzeichnet sind, müssen für nicht gepufferte E/A-Vorgänge geöffnet werden.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieses Flag wird erst unterstützt, wenn Windows 8 und Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
Die Datei, die zuvor mit dem MARK_HANDLE_READ_COPY-Flag für das Lese-Kopierverhalten markiert wurde, kann mit diesem Flag deaktiviert werden, wodurch das Lese-Kopierverhalten entfernt wird. Dateien, die mit diesem Flag gekennzeichnet sind, müssen für nicht gepufferte E/A-Vorgänge geöffnet werden.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieses Flag wird erst unterstützt, wenn Windows 8 und Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Beim Mischen von zugeordneten/zwischengespeicherten E/A mit nicht zwischengespeicherten E/A-Adressen versucht das System, wenn eine nicht zwischengespeicherte E/A-Instanz ausgegeben wird, Speicherzuordnungen für den Bereich der nicht zwischengespeicherten E/A zu bereinigen. Wenn diese Bereinigungen fehlschlagen, gibt das System den Fehler normalerweise nicht an den Aufrufer zurück, was zu einem beschädigten Zustand führen kann (weshalb die Dokumentation besagt, dass dies nicht geschieht). Dieses Flag weist das System an, Löschfehler für den angegebenen Handle zurückzugeben, damit die Anwendung diese Situation besser bewältigen kann.

Dieses Flag wird erst unterstützt, wenn Windows 8 und Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Eine stark fragmentierte Datei in NTFS verwendet mehrere MFT-Datensätze, um alle Erweiterungen für eine Datei zu beschreiben. Diese Liste der untergeordneten MFT-Einträge (auch als FRS-Datensätze bezeichnet) wird von einer Struktur gesteuert, die als Attributliste bezeichnet wird. Eine Attributliste ist auf 128 KB beschränkt. Wenn die Größe einer Attributliste einen bestimmten Schwellenwert erreicht, löst NTFS eine Hintergrundkomprimierung für die Ausdehnungen aus, sodass die Mindestanzahl untergeordneter FRS-Einträge verwendet wird. Dieses Flag deaktiviert diese FRS-Komprimierungsfunktion für die angegebene Datei.

Dieses Flag wird erst Windows 10 unterstützt.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Weist NTFS an, den angegebenen UsnSourceInfo-Wert für Pagingschreibvorgänge im USN-Journal festzulegen. Traditionell wurde dies nicht beim Paging von Schreibvorgängen durchgeführt, da das System nicht wusste, welcher Thread die angegebenen Änderungen vorgenommen hat. Dies ist eine Überschreibung. Dies funktioniert nur, wenn dem vom Speicher-Manager verwendeten FileObject dieser Zustand zugeordnet ist.

Dieses Flag wird erst Windows 10 unterstützt.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
Das Festlegen dieses Flags teilt dem System mit, dass Schreibvorgänge für diese Datei nicht zulässig sind. Wenn eine Anwendung versucht, die Datei für den Schreibzugriff zu öffnen, ist der Vorgang mit STATUS_ACCESS_DENIED fehlgeschlagen. Wenn ein Schreibvorgang angezeigt wird, ist der Vorgang mit STATUS_MARKED_TO_DISALLOW_WRITES

Dieses Flag wird erst Windows 10 unterstützt.

Hinweise

Um ein Handle für ein Volume abzurufen, rufen Sie CreateFile auf, wobei der lpFileName-Parameter auf eine Zeichenfolge in der folgenden Form festgelegt ist:

"\.\X:"

In der vorherigen Zeichenfolge ist X der Buchstabe, der das Laufwerk identifiziert, auf dem das Volume angezeigt wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile winioctl.h (einschließlich Windows.h)

Weitere Informationen

FSCTL_MARK_HANDLE

USN_RECORD