structure USN_RECORD_V4 (winioctl.h)
Contient les informations d’un enregistrement de journal de modifications du nombre de séquences de mise à jour (USN) version 4.0. Les enregistrements versions 2.0 et 3.0 sont respectivement définis par les structures USN_RECORD_V2 (également appelée USN_RECORD) et USN_RECORD_V3.
Syntaxe
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;
Membres
Header
Une structure USN_RECORD_COMMON_HEADER qui décrit la longueur de l’enregistrement, la version principale et la version mineure de l’enregistrement.
FileReferenceNumber
Numéro ordinal 128 bits du fichier ou du répertoire pour lequel cet enregistrement note les modifications.
Cette valeur est une valeur attribuée arbitrairement qui associe un enregistrement de journal à un fichier.
ParentFileReferenceNumber
Numéro ordinal 128 bits du répertoire où se trouve le fichier ou le répertoire associé à cet enregistrement.
Cette valeur est une valeur attribuée arbitrairement qui associe un enregistrement de journal à un répertoire parent.
Usn
USN de cet enregistrement.
Reason
Indicateurs qui identifient les raisons des modifications qui se sont accumulées dans cet enregistrement de journal de fichiers ou de répertoires depuis l’ouverture du fichier ou du répertoire.
Lorsqu’un fichier ou un répertoire se ferme, un enregistrement USN final est généré avec l’indicateur USN_REASON_CLOSE défini. La modification suivante (par exemple, après l’opération d’ouverture ou de suppression suivante) démarre un nouvel enregistrement avec un nouvel ensemble d’indicateurs de raison.
Une opération de renommage ou de déplacement génère deux enregistrements USN, l’un qui enregistre l’ancien répertoire parent de l’élément et l’autre qui enregistre un nouveau parent.
Le tableau suivant identifie les indicateurs possibles.
SourceInfo
Informations supplémentaires sur la source de la modification, définies par le FSCTL_MARK_HANDLE de l’opération DeviceIoControl .
Lorsqu’un thread écrit un nouvel enregistrement USN, les indicateurs d’informations sources dans l’enregistrement précédent continuent d’être présents uniquement si le thread définit également ces indicateurs. Par conséquent, la structure d’informations sources permet aux applications de filtrer les enregistrements USN définis uniquement par une source connue, par exemple un filtre antivirus.
L’une des valeurs suivantes peut être définie.
RemainingExtents
Nombre d’extensions qui restent après l’enregistrement USN_RECORD_V4 actuel. Plusieurs enregistrements de version 4.0 peuvent être nécessaires pour décrire toutes les extensions modifiées pour un fichier donné. Lorsque le membre RemainingExtents est 0, l’enregistrement USN_RECORD_V4 actuel est le dernier enregistrement USN_RECORD_V4 du fichier. La dernière entrée USN_RECORD_V4 pour un fichier donné est toujours suivie d’un enregistrement USN_RECORD_V3 avec au moins l’indicateur USN_REASON_CLOSE défini.
NumberOfExtents
Nombre d’étendues dans l’entrée USN_RECORD_V4 actuelle.
ExtentSize
Taille de chaque structure USN_RECORD_EXTENT dans le membre Extents, en octets .
Extents[1]
Tableau de structures USN_RECORD_EXTENT qui représentent les étendues dans l’entrée USN_RECORD_V4 .
Remarques
Un enregistrement USN_RECORD_V4 n’est généré que lorsque le suivi de plage est activé et que la taille de fichier est égale ou supérieure à la valeur du membre RangeTrackFileSizeThreshold . L’utilisateur reçoit toujours un ou plusieurs enregistrements USN_RECORD_V4 suivis d’un enregistrement USN_RECORD_V3 .
Pour fournir une compatibilité de chemin d’accès dans les clients de journal des modifications, Microsoft fournit un numéro de version principale et secondaire du logiciel de journal des modifications dans la structure USN_RECORD_V4 . Votre code doit examiner ces valeurs, examiner sa propre compatibilité avec le logiciel du journal des modifications et gérer correctement toute incompatibilité si nécessaire.
Une modification du numéro de version secondaire indique que les membres de structure USN_RECORD_V4 existants sont toujours valides, mais que de nouveaux membres ont peut-être été ajoutés entre l’avant-dernier membre et le dernier, qui est une chaîne de longueur variable.
Pour gérer correctement une telle modification, votre code ne doit pas effectuer d’arithmétique de pointeur au moment de la compilation qui repose sur l’emplacement du dernier membre. Par exemple, une modification du numéro de version mineure rend l’appel sizeof(USN_RECORD)
non fiable. Au lieu de cela, utilisez des calculs d’exécution qui utilisent le membre RecordLength .
Une augmentation du numéro de version principale du logiciel de journal des modifications indique que la structure USN_RECORD_V4 a peut-être subi des modifications majeures et que la définition actuelle peut ne pas être fiable. Si votre code détecte une modification dans le numéro de version principale du logiciel du journal des modifications, le code ne doit pas fonctionner avec le journal des modifications.
Pour plus d’informations, consultez Création, modification et suppression d’un Journal de modification.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8.1 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 R2 [applications de bureau uniquement] |
En-tête | winioctl.h (inclure Windows.h) |