La Runlist

 

La runlist est une notion très importante dans le format NTFS. Cela permet de gèrer les données qui ne peuvent pas etre placé en résident dans un file attribute. Cella sert aussi de correspondance entre les LCN et les VCN.

LCN : Logical Cluster Number

VCN : Virtual Cluster Number

Les LCN réprésentent les Cluster physiques d'un disque dur alors que les VCN déterminent une série appartenant à un fichier particulier

 

Etant donnée qu'un FILE fait en 1 et 4 koctets, on ne peut pas y mettre toutes les données, on a alors a faire à des attribute non-résident. Pour coder la list des clusters ont font se trouver ces données, on fait appel à un runlist.

Pour ga gner de la place, les Offsets et les Tailles sont codées sur un Nibble (4 bits) et sont de taille variable.

 

 Offset en Nibble   Taille  Description
 0  1  F = Taille de l'offset
 1  1  L = Taille de la taille
 2  2 * L  Longueur du run
 2 + 2* L  2 * F  Offset depuis le LCN de départ de l'élément précédent

Les runlist doivent tenir compter de la compression de fichier. Pour simplifier les choses, les VCN sont regroupées par packet de 16 clusters, en compression unit.

 

Exemple de runlist et de décodage.

21 14 00 01 11 10 18 11 05 15 01 27 11 20 05

Ce qui donne un fois dépacké

0x100 0x14
0x18 0x10
0x15 0x5
0x0 027
0x5 0x20

 

Compression unit beginning at VCN 0
10 clusters at LCN 100
Unit not compressed
Compression unit beginning at VCN 10
4 clusters at LCN 110
c clusters at LCN 118
Unit not compressed
Compression unit beginning at VCN 20
4 clusters at LCN 124
5 clusters at LCN 12d
7 unused clusters : compressed unit
Compression unit beginning at VCN 30
10 zeroed clusters : sparse unit
Compression unit beginning at VCN 40
10 zeroed clusters : sparse unit
Compression unit beginning at VCN 50
10 clusters at LCN 132
Unit not compressed
Compression unit beginning at VCN 60
10 clusters at LCN 142
Unit not compressed