MARK_HANDLE_INFO Struktur (winioctl.h)

Enthält Informationen, die verwendet werden, um eine angegebene Datei oder ein angegebenes Verzeichnis zu markieren, und die Aktualisierungssequenznummer (USN) ändert den Journaldatensatz 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;

Angehörige

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Der Typ der vorgenommenen Änderungen.

Der Vorgang ändert die Datei oder das Verzeichnis nicht extern aus der Sicht der Anwendung, die sie erstellt hat.

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

Die folgenden Werte sind definiert.

Wert Bedeutung
USN_SOURCE_DATA_MANAGEMENT
0x00000001
Der Vorgang enthält Informationen zu einer Änderung an der Datei oder dem Verzeichnis, die vom Betriebssystem vorgenommen werden.

Eine typische Verwendung ist, wenn Remotespeicher Daten von einem externen 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 zu einem USN-Eintrag hinzu. Die Daten wurden jedoch aus Sicht des Benutzers nicht geändert. Wenn Sie USN_SOURCE_DATA_MANAGEMENT im SourceInfo Element der USN_RECORD Struktur notieren, die den Datensatz enthält, können Sie feststellen, dass daten, obwohl ein Schreibvorgang für das Element ausgeführt wird, nicht geändert wurde.

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

Ein Beispiel könnte ein Virendetektor sein, der Prüfsummeninformationen hinzufügt. Während der Virusdetektor das Element ändert, generiert das System USN-Datensätze. USN_SOURCE_AUXILIARY_DATA weist darauf hin, 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 Kennzeichen fest, wenn eine Datei in einem replizierten Verzeichnis erstellt oder aktualisiert wird.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
Die Replikation wird auf Clientsystemen entweder über die Cloud oder server ausgeführt.

VolumeHandle

Das Volumehandle für das Volume, auf 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 die SE_MANAGE_VOLUME_NAME Berechtigung 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 Handlewert im VolumeHandle Member identifiziert werden.

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

Sobald ein Handle geschlossen wurde, das MARK_HANDLE_PROTECT_CLUSTERS markiert ist, besteht keine Garantie dafür, dass die Cluster der Datei nicht verschoben werden.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
Die Datei ist als nicht defragmentiert gekennzeichnet, 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 ist als nicht defragmentiert gekennzeichnet, 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 echtzeitbasiertes Leseverhalten gekennzeichnet. Dateien, die mit dieser Kennzeichnung gekennzeichnet sind, müssen für nicht entbufferten E/A-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 zuvor für das Echtzeitleseverhalten mit dem MARK_HANDLE_REALTIME Flag markierte Datei kann mit diesem Flag nicht markiert werden, wodurch das Echtzeitverhalten entfernt wird. Dateien, die mit dieser Kennzeichnung gekennzeichnet sind, müssen für nicht entbufferten E/A-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 für Lesevorgänge an. Dateien, die mit dieser Kennzeichnung gekennzeichnet sind, müssen für nicht entbufferten E/A-geöffnet werden.

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

MARK_HANDLE_NOT_READ_COPY
0x00000100
Die datei, die zuvor für das Lesekopieverhalten mit dem MARK_HANDLE_READ_COPY Flag markiert wurde, kann mit diesem Flag nicht markiert werden, wodurch das Lesekopieverhalten entfernt wird. Dateien, die mit dieser Kennzeichnung gekennzeichnet sind, müssen für nicht entbufferten E/A-geöffnet werden.

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

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Beim Mischen des zugeordneten/zwischengespeicherten E/A-Speichers mit nicht zwischengespeicherter E/A versucht das System, wenn ein nicht zwischengespeichertes Io ausgegeben wird, Speicherzuordnungen für den Bereich der nicht zwischengespeicherten E/A zu löschen. Wenn diese Bereinigungen fehlschlagen, gibt das System normalerweise nicht den Fehler an den Aufrufer zurück, der zu beschädigten Zustand führen kann (weshalb die Dokumentation sagt, dass dies nicht geschieht). Dieses Kennzeichen weist das System an, Löschfehler für das angegebene Handle zurückzugeben, damit die Anwendung diese Situation besser behandeln kann.

Dieses Kennzeichen wird erst unter Windows 8 und Windows Server 2012 unterstützt.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Eine stark fragmentierte Datei in NTFS verwendet mehrere MFT-Einträge, um alle Ausmaße für eine Datei zu beschreiben. Diese Liste der untergeordneten MFT-Datensätze (auch als FRS-Datensätze bezeichnet) wird durch eine Struktur gesteuert, die als Attributliste bezeichnet wird. Eine Attributliste ist auf 128 KB begrenzt. Wenn die Größe einer Attributliste auf einen bestimmten Schwellenwert trifft, löst NTFS eine Hintergrundkomprimierung in den Ausmaßen aus, sodass die Mindestanzahl der untergeordneten FRS-Einträge verwendet wird. Dieses Flag deaktiviert dieses FRS-Komprimierungsfeature für die angegebene Datei.

Dieses Kennzeichen wird erst unter Windows 10 unterstützt.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Weist NTFS an, den angegebenen UsnSourceInfo-Wert für Paging-Schreibvorgänge im USN Journal festzulegen. Dies wurde traditionell nicht bei Auslagerungs-Schreibvorgängen durchgeführt, da das System nicht wusste, welcher Thread die gegebenen Änderungen vorgenommen hat. Dies ist eine Außerkraftsetzung. Dies funktioniert nur, wenn das vom Speicher-Manager verwendete FileObject diesen Zustand zugeordnet hat.

Dieses Kennzeichen wird erst unter Windows 10 unterstützt.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
Durch Festlegen dieses Flags wird dem System mitgeteilt, dass Schreibvorgänge in dieser 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 mit STATUS_MARKED_TO_DISALLOW_WRITES fehlgeschlagen ist

Dieses Kennzeichen wird erst unter Windows 10 unterstützt.

Bemerkungen

Rufen Sie zum Abrufen eines Handles zu einem Volume CreateFile- auf, wobei der parameter lpFileName auf eine Zeichenfolge in der folgenden Form festgelegt ist:

"\\.\X:"

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Header- winioctl.h (enthalten Windows.h)

Siehe auch

FSCTL_MARK_HANDLE

USN_RECORD