Flux de fichiers (systèmes de fichiers locaux)
Un flux est une séquence d’octets. Dans le système de fichiers NTFS, les flux contiennent les données écrites dans un fichier et fournissent plus d’informations sur un fichier que les attributs et les propriétés. Par exemple, vous pouvez créer un flux qui contient des mots clés de recherche ou l’identité du compte d’utilisateur qui crée un fichier.
Chaque flux associé à un fichier a sa propre taille d’allocation, sa taille réelle et sa longueur de données valide :
- La taille d’allocation correspond à la quantité d’espace disque réservé à un flux.
- La taille réelle est le nombre d’octets utilisés par un appelant.
- La longueur de données valide (VDL) est le nombre d’octets qui sont initialisés à partir de la taille d’allocation du flux.
Chaque flux conserve également son propre état pour la compression, le chiffrement et l’éparseness. L’attribut FILE_ATTRIBUTE_SPARSE_FILE sur le fichier est défini dans le membre dwFileAttributes de la structure WIN32_FIND_DATA retournée par l'FindFirstFile, FindFirstFileExet FindNextFile fonctions si l’un des flux n’a jamais été partiellement alloué. GetFileAttributes, GetFileAttributesEx, GetFileAttributesTransacted, GetFileInformationByHandleet GetFileInformationByHandleEx retourner l’état éparse du flux de données par défaut si aucun flux n’est spécifié.
Aucun fichier n’est associé à un flux. Les heures de fichier d’un fichier sont mises à jour quand un flux dans un fichier est mis à jour.
Les verrous opportunistes sont conservés par flux. Les modes de partage sont également gérés par flux. Lorsque l’accès à la suppression est demandé sur un fichier, le système d’exploitation recherche l’accès à la suppression sur tous les flux ouverts d’un fichier. Si un autre processus a ouvert un flux sans l’autorisation FILE_SHARE_DELETE, vous ne pouvez pas ouvrir le fichier pour l’accès à la suppression.
Si un fichier copié a un flux de données et que le redirecteur réseau est utilisé, le fichier ne peut être copié que si le client dispose à la fois de l’autorisation de lecture et de l’autorisation d’attributs de lecture.
Conventions d’affectation de noms pour les flux
Lorsqu’il est spécifié à partir de la ligne de commande de l’interpréteur de commandes Windows, le nom complet d’un flux est «nom de fichier:nom de flux:type de flux», comme dans l’exemple suivant : « myfile.dat :stream1 :$DATA ».
Tous les caractères qui sont légaux pour un nom de fichier sont également légaux pour le nom du flux, y compris les espaces. Pour plus d’informations, consultez nommage d’un fichier. Le type de flux (également appelé code de type d’attribut) est interne au système de fichiers NTFS. Les utilisateurs ne peuvent donc pas créer de nouveaux types de flux, mais ils peuvent ouvrir des types de système de fichiers NTFS existants. Les valeurs du spécificateur de type de flux commencent toujours par le symbole de signe dollar ($). Consultez ci-dessous pour obtenir la liste des types de flux.
Par défaut, le flux de données par défaut n’est pas nommé. Pour spécifier entièrement le flux de données par défaut, utilisez «nom de fichier::$DATA », où $DATA est le type de flux. Il s’agit de l’équivalent de «nom de fichier». Vous pouvez créer un flux nommé dans le fichier à l’aide des conventions d’affectation de noms de fichiers . Notez que « $DATA » est un nom de flux légal. Par exemple, le nom complet d’un flux nommé « $DATA » sur un fichier nommé «exemple de» serait «exemple:$DATA :$DATA ». Si vous avez créé un flux nommé « bar » dans le même fichier, son nom complet serait «exemple:bar :$DATA ».
Lors de la création et de l’utilisation de fichiers qui ont des noms à caractère unique, préfixez le nom de fichier avec un point suivi d’une barre oblique inverse (.) ou utilisez un nom de chemin complet. Pour cela, Windows traite les noms de fichiers à un caractère comme des lettres de lecteur. Lorsqu’une lettre de lecteur est spécifiée avec un chemin relatif, un signe deux-points sépare la lettre de lecteur du chemin d’accès. Lorsqu’il existe une ambiguïté quant à la question de savoir si un nom de lecteur est une lettre de lecteur ou un nom de fichier, Windows suppose qu’il s’agit d’une lettre de lecteur si la chaîne qui suit le signe deux-points est un chemin d’accès valide, même si la lettre de lecteur n’est pas valide.
Types de flux
Voici la liste des types de flux NTFS, également appelées codes de type d’attribut. Certains types de flux sont internes à NTFS et leur format n’est pas documenté.
Type de flux | Description |
---|---|
::$ATTRIBUTE_LIST | Contient une liste de tous les attributs qui composent le fichier et identifie l’emplacement de chaque attribut. |
::$BITMAP | Bitmap utilisée par les index pour gérer l’espace libre de l’arborescence b pour un répertoire. L’arborescence b est gérée en blocs de 4 Ko (quelle que soit la taille du cluster) et elle est utilisée pour gérer l’allocation de ces blocs. Ce type de flux est présent sur chaque répertoire. |
::$DATA | Flux de données. Le flux de données par défaut n’a aucun nom. Les flux de données peuvent être énumérés à l’aide des fonctions FindFirstStreamW et FindNextStreamW. |
::$EA | Contient des données d’attributs étendus. |
::$EA_INFORMATION | Contient des informations de support sur les attributs étendus. |
::$FILE_NAME | Nom du fichier, en caractères Unicode. Cela inclut le nom court du fichier ainsi que tous les liens durs. |
::$INDEX_ALLOCATION | Type de flux d’un répertoire. Utilisé pour implémenter l’allocation de nom de fichier pour les répertoires volumineux. Ce flux représente le répertoire lui-même et contient toutes les données du répertoire. Les modifications apportées aux flux de ce type sont journalisées dans le journal des modifications NTFS. Le nom de flux par défaut d’un type de flux $INDEX_ALLOCATION est $I 30 , «DirName», «DirName::$INDEX_ALLOCATION », et «DirName:$I 30 :$INDEX_ALLOCATION » sont tous équivalents. |
::$INDEX_ROOT | Ce flux représente la racine de l’arborescence b d’un index. Ce type de flux est présent sur chaque répertoire. |
::$LOGGED_UTILITY_STREAM | Similaire à ::$DATA, mais les opérations sont journalisées dans le journal des modifications NTFS. Utilisé par EFS et NTFS transactionnel (TxF). La paire « :StreamName:$StreamType» pour EFS est « :$EFS :$LOGGED_UTILITY_STREAM » et txF est « :$TXF_DATA :$LOGGED_UTILITY_STREAM ». |
::$OBJECT_ID | ID de 16 octets utilisé pour identifier le fichier du service de suivi des liens. |
::$REPARSE_POINT | Le point d’analyse données. |
Rubriques connexes