Freigeben über


USN_RECORD_V4-Struktur (winioctl.h)

Enthält die Informationen für einen Änderungsjournaldatensatz der Version 4.0 der Updatesequenznummer (USN). Die Datensätze der Version 2.0 und 3.0 werden durch die Strukturen USN_RECORD_V2 (auch als USN_RECORD bezeichnet) sowie . USN_RECORD_V3 definiert.

Syntax

typedef struct {
  USN_RECORD_COMMON_HEADER Header;
  FILE_ID_128              FileReferenceNumber;
  FILE_ID_128              ParentFileReferenceNumber;
  USN                      Usn;
  DWORD                    Reason;
  DWORD                    SourceInfo;
  DWORD                    RemainingExtents;
  WORD                     NumberOfExtents;
  WORD                     ExtentSize;
  USN_RECORD_EXTENT        Extents[1];
} USN_RECORD_V4, *PUSN_RECORD_V4;

Member

Header

Eine USN_RECORD_COMMON_HEADER-Struktur , die die Datensatzlänge, Hauptversion und Nebenversion für den Datensatz beschreibt.

FileReferenceNumber

Die 128-Bit-Ordnungszahl der Datei oder des Verzeichnisses, für die sich dieser Datensatz ändert.

Dieser Wert ist ein willkürlich zugewiesener Wert, der einem Journaldatensatz einer Datei zuordnet.

ParentFileReferenceNumber

Die 128-Bit-Ordnungszahl des Verzeichnisses, in dem sich die Diesem Datensatz zugeordnete Datei oder das Verzeichnis befindet.

Dieser Wert ist ein willkürlich zugewiesener Wert, der einen Journaldatensatz einem übergeordneten Verzeichnis zuordnet.

Usn

Der USN dieses Datensatzes.

Reason

Die Flags, die Gründe für Änderungen identifizieren, die sich seit dem Öffnen der Datei oder des Verzeichnisses in diesem Datei- oder Verzeichnisjournaldatensatz angesammelt haben.

Wenn eine Datei oder ein Verzeichnis geschlossen wird, wird ein endgültiger USN-Eintrag mit festgelegtem USN_REASON_CLOSE-Flag generiert. Die nächste Änderung (z. B. nach dem nächsten geöffneten Vorgang oder Löschvorgang) startet einen neuen Datensatz mit einem neuen Satz von Ursachenflags.

Bei einem Umbenennungs- oder Verschiebungsvorgang werden zwei USN-Einträge generiert: einer, der das alte übergeordnete Verzeichnis für das Element aufzeichnet, und einer, der ein neues übergeordnetes Verzeichnis aufzeichnet.

In der folgenden Tabelle sind die möglichen Flags aufgeführt.

Hinweis Nicht verwendete Bits sind reserviert.
 
Wert Bedeutung
USN_REASON_BASIC_INFO_CHANGE
0x00008000
Ein Benutzer hat entweder ein oder mehrere Datei- oder Verzeichnisattribute (z. B. das schreibgeschützte, ausgeblendete, System-, Archiv- oder Sparse-Attribut) oder einen oder mehrere Zeitstempel geändert.
USN_REASON_CLOSE
0x80000000
Die Datei oder das Verzeichnis ist geschlossen.
USN_REASON_COMPRESSION_CHANGE
0x00020000
Der Komprimierungsstatus der Datei oder des Verzeichnisses wird von oder in komprimiert geändert.
USN_REASON_DATA_EXTEND
0x00000002
Die Datei oder das Verzeichnis wird erweitert (hinzugefügt).
USN_REASON_DATA_OVERWRITE
0x00000001
Die Daten in der Datei oder im Verzeichnis werden überschrieben.
USN_REASON_DATA_TRUNCATION
0x00000004
Die Datei oder das Verzeichnis wird abgeschnitten.
USN_REASON_EA_CHANGE
0x00000400
Der Benutzer hat eine Änderung an den erweiterten Attributen einer Datei oder eines Verzeichnisses vorgenommen.

Auf diese NTFS-Dateisystemattribute kann nicht für Windows-basierte Anwendungen zugegriffen werden.

USN_REASON_ENCRYPTION_CHANGE
0x00040000
Die Datei oder das Verzeichnis wird verschlüsselt oder entschlüsselt.
USN_REASON_FILE_CREATE
0x00000100
Die Datei oder das Verzeichnis wird zum ersten Mal erstellt.
USN_REASON_FILE_DELETE
0x00000200
Die Datei oder das Verzeichnis wird gelöscht.
USN_REASON_HARD_LINK_CHANGE
0x00010000
Eine feste Verknüpfung des NTFS-Dateisystems wird der Datei oder dem Verzeichnis hinzugefügt oder daraus entfernt.

Eine feste Verknüpfung des NTFS-Dateisystems, ähnlich wie bei einer POSIX-Hard-Verknüpfung, ist einer von mehreren Verzeichniseinträgen, die die gleiche Datei oder dasselbe Verzeichnis sehen.

USN_REASON_INDEXABLE_CHANGE
0x00004000
Ein Benutzer ändert das attribut FILE_ATTRIBUTE_NOT_CONTENT_INDEXED .

Das heißt, der Benutzer ändert die Datei oder das Verzeichnis von einem Verzeichnis, in dem Inhalte indiziert werden können, in ein Verzeichnis, in dem Inhalte nicht indiziert werden können, oder umgekehrt. Die Inhaltsindizierung ermöglicht eine schnelle Suche nach Daten, indem eine Datenbank mit ausgewählten Inhalten erstellt wird.

USN_REASON_INTEGRITY_CHANGE
0x00800000
Ein Benutzer hat den Status des FILE_ATTRIBUTE_INTEGRITY_STREAM-Attributs für den angegebenen Stream geändert.

Im ReFS-Dateisystem verwalten Integritätsdatenströme eine Prüfsumme aller Daten für diesen Datenstrom, sodass der Inhalt der Datei während Lese- oder Schreibvorgängen überprüft werden kann.

USN_REASON_NAMED_DATA_EXTEND
0x00000020
Die benannten Datenströme für eine Datei werden erweitert (hinzugefügt).
USN_REASON_NAMED_DATA_OVERWRITE
0x00000010
Die Daten in einem oder mehreren benannten Datenströmen für eine Datei werden überschrieben.
USN_REASON_NAMED_DATA_TRUNCATION
0x00000040
Der benannte Datenstrom für eine Datei wird abgeschnitten.
USN_REASON_OBJECT_ID_CHANGE
0x00080000
Der Objektbezeichner einer Datei oder eines Verzeichnisses wird geändert.
USN_REASON_RENAME_NEW_NAME
0x00002000
Eine Datei oder ein Verzeichnis wird umbenannt, und der Dateiname in der USN_RECORD_V4-Struktur ist der neue Name.
USN_REASON_RENAME_OLD_NAME
0x00001000
Die Datei oder das Verzeichnis wird umbenannt, und der Dateiname in der USN_RECORD_V4-Struktur ist der vorherige Name.
USN_REASON_REPARSE_POINT_CHANGE
0x00100000
Der Analysepunkt, der in einer Datei oder einem Verzeichnis enthalten ist, wird geändert, oder ein Analysepunkt wird einer Datei oder einem Verzeichnis hinzugefügt oder daraus gelöscht.
USN_REASON_SECURITY_CHANGE
0x00000800
An den Zugriffsrechten für eine Datei oder ein Verzeichnis wird eine Änderung vorgenommen.
USN_REASON_STREAM_CHANGE
0x00200000
Ein benannter Stream wird einer Datei hinzugefügt oder daraus entfernt, oder ein benannter Stream wird umbenannt.
USN_REASON_TRANSACTED_CHANGE
0x00400000
Der angegebene Stream wird durch eine committete TxF-Transaktion geändert.

SourceInfo

Zusätzliche Informationen zur Quelle der Änderung, festgelegt durch die FSCTL_MARK_HANDLE des DeviceIoControl-Vorgangs .

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

Einer der folgenden Werte kann festgelegt werden.

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

Ein Beispiel ist ein Virusdetektor, 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_DATA_MANAGEMENT
0x00000001
Der Vorgang stellt Informationen zu einer Änderung der Datei oder des Verzeichnisses bereit, die vom Betriebssystem vorgenommen wurde.

Ein typischer Einsatz ist, wenn das Remotespeichersystem Daten von externem 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. Wenn Sie USN_SOURCE_DATA_MANAGEMENT im SourceInfo-Member notieren, können Sie feststellen, dass die Daten nicht geändert wurden, obwohl ein Schreibvorgang für das Element ausgeführt wird.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
Der Vorgang ändert eine Datei so, dass sie dem Inhalt derselben Datei entspricht, die in einem anderen Element des Replikatsatzes vorhanden ist.
USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
Der Vorgang ändert eine Datei auf Clientsystemen so, dass sie dem Inhalt derselben Datei entspricht, die in der Cloud vorhanden ist.

RemainingExtents

Die Anzahl der Erweiterungen, die nach dem aktuellen USN_RECORD_V4 Datensatz verbleiben. Möglicherweise sind mehrere Einträge der Version 4.0 erforderlich, um alle geänderten Erweiterungen für eine bestimmte Datei zu beschreiben. Wenn das RemainingExtents-Element 0 ist, ist der aktuelle USN_RECORD_V4 Datensatz der letzte USN_RECORD_V4 Datensatz für die Datei. Auf den letzten USN_RECORD_V4 Eintrag für eine bestimmte Datei folgt immer ein USN_RECORD_V3 Datensatz mit mindestens dem USN_REASON_CLOSE-Flag .

NumberOfExtents

Die Anzahl der Erweiterungen im aktuellen USN_RECORD_V4 Eintrag.

ExtentSize

Die Größe jeder USN_RECORD_EXTENT Struktur im Extents-Member in Bytes.

Extents[1]

Ein Array von USN_RECORD_EXTENT Strukturen, die die Ausdehnungen im USN_RECORD_V4-Eintrag darstellen.

Hinweise

Ein USN_RECORD_V4 Datensatz wird nur ausgegeben, wenn die Bereichsnachverfolgung aktiviert ist und die Dateigröße gleich oder größer als der Wert des RangeTrackFileSizeThreshold-Elements ist. Der Benutzer erhält immer einen oder mehrere USN_RECORD_V4 Datensätze gefolgt von einem USN_RECORD_V3 Datensatz.

Microsoft stellt eine Haupt- und Nebenversionsnummer der Änderungsjournalsoftware in der USN_RECORD_V4-Struktur bereit, um eine Pfadweiterweiterkompatibilität für Änderungsjournalclients bereitzustellen. Ihr Code sollte diese Werte untersuchen, seine eigene Kompatibilität mit der Änderungsjournalsoftware untersuchen und bei Bedarf alle Inkompatibilitäten ordnungsgemäß behandeln.

Eine Änderung der Nebenversionsnummer gibt an, dass die vorhandenen USN_RECORD_V4-Strukturmember weiterhin gültig sind, dass jedoch möglicherweise neue Member zwischen dem vorletzten und dem letzten Element hinzugefügt wurden, wobei es sich um eine Zeichenfolge mit variabler Länge handelt.

Um eine solche Änderung ordnungsgemäß zu behandeln, sollte Ihr Code keine Kompilierzeitzeigerarithmetik ausführen, die von der Position des letzten Elements abhängig ist. Beispielsweise macht eine Änderung der Nebenversionsnummer den sizeof(USN_RECORD) Anruf unzuverlässig. Verlassen Sie sich stattdessen auf Laufzeitberechnungen, die das RecordLength-Element verwenden.

Eine Erhöhung der Hauptversionsnummer der Änderungsjournalsoftware weist darauf hin, dass die USN_RECORD_V4 Struktur möglicherweise größere Änderungen erfahren hat und dass die aktuelle Definition möglicherweise nicht zuverlässig ist. Wenn Ihr Code eine Änderung der Hauptversionsnummer der Änderungsjournalsoftware erkennt, sollte der Code nicht mit dem Änderungsjournal funktionieren.

Weitere Informationen finden Sie unter Erstellen, Ändern und Löschen einer Änderung Journal.

Anforderungen

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

Weitere Informationen

FSCTL_MARK_HANDLE

FSCTL_READ_USN_JOURNAL

FSCTL_USN_TRACK_MODIFIED_RANGES

GetFileAttributes

GetVolumeInformation

READ_USN_JOURNAL_DATA

USN_RECORD_COMMON_HEADER

USN_RECORD_EXTENT

USN_RECORD_V2

USN_RECORD_V3

Volumeverwaltungsstrukturen