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.
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.
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) |