Partager via


MULTI_SECTOR_HEADER structure

[Cette structure est valide uniquement pour la version 3 des volumes NTFS; elle peut être modifiée dans les versions ultérieures.]

Représente l’en-tête multisecteur.

Syntaxe

typedef struct _MULTI_SECTOR_HEADER {
  UCHAR  Signature[4];
  USHORT UpdateSequenceArrayOffset;
  USHORT UpdateSequenceArraySize;
} MULTI_SECTOR_HEADER, *PMULTI_SECTOR_HEADER;

Membres

Signature

Signature. Cette valeur est pratique pour l’utilisateur.

UpdateSequenceArrayOffset

Décalage vers le tableau de séquences de mise à jour, à partir du début de cette structure. Le tableau de séquences de mise à jour doit se terminer avant la dernière valeur USHORT dans le premier secteur.

UpdateSequenceArraySize

Taille du tableau de séquences de mise à jour, en octets.

Notes

Notez qu’aucun fichier d’en-tête n’est associé à cette structure.

Cette définition de structure est valide uniquement pour la version majeure 3 et la version mineure 0 ou 1, comme indiqué par FSCTL_GET_NTFS_VOLUME_DATA.

L’en-tête multisector et le tableau de séquences de mise à jour permettent de détecter les transferts multisectoraux incomplets pour les appareils dont la taille de secteur physique est supérieure ou égale à la foulée du numéro de séquence (512) ou qui ne transfèrent pas de secteurs dans le désordre. S’il existe un appareil dont la taille de secteur est inférieure à la foulée du numéro de séquence et qu’il transfère parfois des secteurs dans le désordre, le tableau de séquences de mise à jour ne permet pas de détecter de façon absolue les transferts incomplets. Le numéro de séquence stride est défini sur un nombre suffisamment petit pour fournir une protection absolue pour tous les disques durs connus. Il n’est pas défini plus petit ou il peut y avoir une surcharge de temps d’exécution ou d’espace excessive.

Le tableau de séquences de mise à jour se compose d’un tableau de n valeurs USHORT, où n est la taille de la structure protégée divisée par la foulée du numéro de séquence. Le premier mot contient le numéro séquentiel de mise à jour, qui est un compteur cyclique du nombre de fois où la structure conteneur a été écrite sur le disque. Voici les n valeurs USHORT enregistrées qui ont été remplacées par le numéro de séquence de mise à jour la dernière fois que la structure conteneur a été écrite sur le disque.

Chaque fois que la structure protégée est sur le point d’être écrite sur le disque, le dernier mot de chaque pas de numéro de séquence est enregistré à sa position respective dans le tableau de numéros de séquence, puis il est remplacé par le numéro de séquence de mise à jour suivant. Après l’écriture, ou chaque fois que la structure est lue, le mot enregistré à partir du tableau de numéros de séquence est restauré à sa position réelle dans la structure. Avant de restaurer les mots enregistrés lors des lectures, tous les numéros de séquence à la fin de chaque foulée sont comparés au numéro de séquence réel au début du tableau. Si l’une de ces comparaisons n’est pas égale, un transfert multisector a été détecté.

La taille du tableau est déterminée par la taille de la structure conteneur. Le tableau de séquences de mise à jour doit être inclus à la fin de l’en-tête de la structure qu’il protège en raison de sa taille variable. L’utilisateur doit s’assurer que l’espace approprié est réservé à la structure conteneur : (taille de la structure / 512 + 1) * sizeof(USHORT).

Voir aussi

Table de fichiers maîtres