Maison / Gains / Ouvert cf. Installation de la configuration à partir d'un fichier CF. Principe de lecture des conteneurs

Ouvert cf. Installation de la configuration à partir d'un fichier CF. Principe de lecture des conteneurs

Nous espérons vous avoir aidé à résoudre votre problème avec le fichier CF. Si vous ne savez pas où télécharger une application de notre liste, cliquez sur le lien (c'est le nom du programme) - Vous trouverez des informations plus détaillées sur où télécharger la version d'installation sécurisée de l'application requise.

Une visite sur cette page devrait vous aider à répondre spécifiquement à ces questions ou à des questions similaires :

  • Comment ouvrir un fichier avec l'extension CF ?
  • Comment convertir un fichier CF dans un autre format ?
  • Quelle est l’extension du format de fichier CF ?
  • Quels programmes supportent le fichier CF?

Si, après avoir consulté les documents sur cette page, vous n'avez toujours pas reçu de réponse satisfaisante à l'une des questions présentées ci-dessus, cela signifie que les informations présentées ici sur le dossier CF sont incomplètes. Contactez-nous en utilisant le formulaire de contact et écrivez les informations que vous n'avez pas trouvées.

Qu'est-ce qui pourrait causer des problèmes ?

Il peut y avoir d'autres raisons pour lesquelles vous ne pouvez pas ouvrir un fichier CF (pas seulement le manque d'application appropriée).
Premièrement- le fichier CF peut être mal lié (incompatible) avec l'application installée pour le prendre en charge. Dans ce cas, vous devez modifier vous-même cette connexion. Pour ce faire, faites un clic droit sur le fichier CF que vous souhaitez modifier, cliquez sur l'option "Pour ouvrir avec" puis sélectionnez le programme que vous avez installé dans la liste. Après cette action, les problèmes liés à l'ouverture du fichier CF devraient complètement disparaître.
Deuxièmement- le fichier que vous souhaitez ouvrir est peut-être simplement endommagé. Dans ce cas, il serait préférable d'en trouver une nouvelle version, ou de la télécharger à nouveau à partir de la même source (peut-être que, pour une raison quelconque, lors de la session précédente, le téléchargement du fichier CF n'a pas été terminé et il n'a pas pu être ouvert correctement). .

Veux tu aider?

Si vous disposez d'informations supplémentaires sur l'extension de fichier CF, nous vous serions reconnaissants de les partager avec les utilisateurs de notre site. Utilisez le formulaire ci-dessous et envoyez-nous vos informations sur le fichier CF.

Dans cet article, je vais vous apprendre à créer un fichier cf de configuration 1C. Qu'est-ce que ce fichier et à quelles fins est-il nécessaire ? Répondons à la première question : la configuration 1C est enregistrée dans ce fichier. À quelles fins est-il le plus souvent utilisé ? Afin de charger la configuration enregistrée dans une base de données vide. Mais il y en a une autre, appelons-la « application non standard ».

À l'aide du fichier cf, vous pouvez mettre à jour la configuration 1C. En utilisant ce fichier, vous pouvez parcourir plusieurs versions à la fois, plutôt que de les mettre à jour une par une à l'aide de fichiers cfu. En savoir plus sur la mise à jour étape par étape de la configuration 1C dans mon article :

Et dans cet article, nous apprendrons comment créer un fichier cf. Pour ce faire, vous devez vous connecter.

Veuillez noter que l'utilisateur sous lequel vous vous connectez au configurateur de base de données 1C doit avoir les droits pour travailler avec le configurateur.

Afin de créer un fichier cf, vous devez ouvrir la configuration si elle est fermée. Très souvent, il peut être fermé. Pour l'ouvrir, cliquez sur le bouton – ouvrir la configuration.

La configuration s'est ouverte, à gauche vous pouvez voir une liste de métadonnées.

Si vous êtes allé dans le configurateur et avez vu une liste de métadonnées sur la gauche, cela signifie que la configuration est déjà ouverte et que vous n'avez pas besoin de l'ouvrir. Habituellement, lorsqu'il est ouvert, le bouton « Fermer la configuration » est actif

Si ce bouton est actif, mais qu'il n'y a pas de liste de métadonnées, cela signifie qu'elle n'est tout simplement pas affichée.

Allez dans le menu de configuration, dans lequel nous sélectionnons l'élément « Enregistrer la configuration dans un fichier »

Nous sélectionnons le répertoire où nous allons le sauvegarder, écrivons le nom du fichier. J'écris généralement par nom de configuration et numéro de version.

Tous les fichiers sont enregistrés.

Désormais, avec son aide, vous pouvez mettre à jour des configurations similaires.

Vous pouvez regarder le processus de création d'un fichier cf « en direct » dans la vidéo ci-dessous :


Comment mettre à jour la configuration 1C à l'aide d'un fichier cf, lisez mon prochain article :

Apprenez les bases de la configuration en 1C et apprenez à programmer en « 1C : Entreprise » à l'aide de mes livres : et « Bases du développement en 1C : Taxi »

Apprenez la programmation en 1C dans mon livre « Programmation en 1C en 11 étapes »

  1. Le livre est écrit dans un langage clair et simple – pour un débutant.
  2. Apprenez à comprendre l'architecture 1C ;
  3. Vous commencerez à écrire du code en langage 1C ;
  4. Maîtriser les techniques de programmation de base ;
  5. Consolidez vos connaissances à l'aide d'un cahier de problèmes ;

Un excellent guide pour développer dans une application 1C gérée, aussi bien pour les développeurs novices que pour les programmeurs expérimentés.

  1. Langage de présentation très accessible et compréhensible
  2. Le livre est envoyé par email au format PDF. Peut être ouvert sur n’importe quel appareil !
  3. Comprendre l'idéologie d'une application 1C gérée
  4. Apprenez à développer une application gérée ;
  5. Apprenez à développer des formulaires 1C gérés ;
  6. Vous serez capable de travailler avec les éléments de base et nécessaires des formulaires gérés
  7. La programmation sous une application gérée deviendra claire

Code promo pour une réduction de 15% - 48PVXHeYu


Si cette leçon vous a aidé à résoudre un problème, que vous l'avez aimé ou que vous l'avez trouvée utile, alors vous pouvez soutenir mon projet en faisant un don de n'importe quel montant :

Vous pouvez payer manuellement :

Yandex.Argent - 410012882996301
Argent Web - R955262494655

Rejoignez mes groupes.

Dans les leçons précédentes, nous avons mentionné que la configuration peut être importée à partir d'un fichier portant l'extension .CF. Par exemple, une entreprise amicale peut vous fournir un tel fichier afin que vous puissiez installer la dernière version de la configuration et l'expérimenter. Dans une telle évolution des événements, vous devez agir comme suit.

Tout d'abord, dans la fenêtre que vous connaissez déjà qui apparaît après le démarrage du programme, cliquez sur le bouton Ajouter.

Dans la fenêtre suivante, sélectionnez Création d'une nouvelle base d'informations.

Dans la fenêtre suivante, vous devez sélectionner l'élément Créer une infobase sans configuration pour développer une nouvelle configuration ou charger une infobase précédemment déchargée.

Dans la fenêtre suivante, indiquez le nom de la base de données.

Après avoir terminé les actions répertoriées dans la liste bases d'informations une nouvelle base de données vide apparaîtra. Vous devez maintenant le sélectionner et cliquer sur le bouton Configurateur. La fenêtre du configurateur s'ouvrira.

Lorsque vous ouvrez la fenêtre pour la première fois, elle est vide et nous devons maintenant effectuer quelques étapes pour charger le fichier CF que vous avez dans la configuration vide.

Exécuter la commande de menu Configuration > Ouvrir la configuration. La fenêtre du programme changera - l'arborescence de configuration s'ouvrira dans sa partie gauche. Cela ne nous intéresse pas encore. Vous pouvez maintenant exécuter la commande Configuration > Charger la configuration à partir du fichier. Cette commande permet de remplacer complètement la configuration existante (dans notre cas vide) par la configuration enregistrée dans le fichier CF. Dans la fenêtre qui apparaît, vous devez préciser le chemin d'accès au fichier dans lequel est stockée la configuration que vous souhaitez charger.

Il ne te reste plus qu'à appuyer sur un bouton Ouvrir et attendez que le programme charge la configuration. Cela peut prendre beaucoup de temps. Si le système vous pose des questions (notamment sur la mise à jour de la configuration de la base de données, sur l'acceptation des modifications dans la structure des informations de configuration), répondez-y par l'affirmative.

Dans le coin inférieur gauche de la fenêtre du programme, des messages de service sur la progression de la mise à jour de la configuration sont affichés. Une fois la mise à jour terminée (les messages de service concernant le chargement de la base de données s'arrêteront), vous pouvez fermer la fenêtre du configurateur et commencer à exécuter le programme en mode utilisateur. Cependant, en pratique, l'installation base d'informations l'utilisation de l'une des méthodes ci-dessus ne limite généralement pas les tâches à effectuer avant d'exécuter la configuration pour la première fois. Il ne faut notamment pas oublier les mises à jour.

*.cf- le fichier contient uniquement la configuration (code et structure) sans les données utilisateur. Créé à partir du configurateur 1C 8.x : « Configuration -> Enregistrer la configuration dans un fichier » ou « Configuration -> Configuration de la livraison -> Créer un fichier de livraison et mettre à jour la configuration -> attribut « Créer un fichier de livraison » ».

*.cfu- le fichier contient uniquement une mise à jour de configuration. Par exemple le fichier 1cv8.cfu. Il est impossible de créer une configuration à partir de ce fichier, puisqu'il ne contient que des différences entre la nouvelle configuration et la précédente. Créé à partir du configurateur 1C 8.x : « Configuration -> Livraison de la configuration -> Créer un fichier de livraison et mise à jour de la configuration -> flag « Créer un fichier de mise à jour de la configuration » ».

*.dt- le fichier contient la configuration ainsi que la base de données utilisateur. Il s'agit d'un format d'archive spécialisé 1C 8. Il est créé à partir du configurateur 1C 8.x : « Administration -> Télécharger l'infobase ».

*.epf (*.erf) – fichier de traitement externe (rapport). Tout traitement (rapport) de la configuration peut être sauvegardé en externe. Créé à partir du configurateur 1C 8.x : « Configuration -> Ouvrir la configuration -> aller dans le traitement (rapport) souhaité -> sélectionner avec le bouton droit de la souris -> Enregistrer comme traitement externe, rapport... ».

*.1cd– un fichier de base de données à part entière. Représentation du nom par défaut : 1Cv8.1CD. Comprend la configuration, la base de données et les paramètres utilisateur. S'ouvre avec la plateforme 1C 8.x. Il est créé pour développer automatiquement une nouvelle configuration en cliquant sur le bouton « Ajouter » lors de la sélection de l'élément « Création d'une nouvelle base d'informations ».

*.log, *.lgf, *.lgp, *.elf- des fichiers journaux qui collectent des informations (données de registre) dans 1C 8.0 8.1, 8.2, 8.3.

*. cdn - fichier avec cette extension ( 1Cv8.cdn) est utilisé pour le blocage manuel ou automatique de la base de données 1C Enterprise huitième version.

*.mxl- des fichiers de formulaires imprimés sont utilisés, y compris en 1C. Il s'agit à la fois de documents imprimés, d'ouvrages de référence, de rapports et de divers dispositifs de stockage de données pour divers classificateurs. S'ouvre via le Configurateur ou en mode 1C:Entreprise via « fichier -> ouvrir ». Il se crée de la même manière : en mode Configurateur ou dans 1C:Enterprise via « fichier -> nouveau ». De plus, les fichiers avec de telles extensions peuvent servir de règles de transfert, par exemple de 1C 7.7 à 8.2 (acc77_82.xml et traitement auxiliaire exp77_82.ert) - ils se trouvent généralement dans le dossier ExtForms.

*.efd- il s'agit d'un fichier d'archive 1C, utilisé pour installer la configuration. Contient soit la configuration 1C, soit une mise à jour de celle-ci. Il est lancé à l'aide du fichier exécutable auxiliaire setup.exe (doit se trouver dans le même dossier).

*.mft– fichier auxiliaire pour créer une configuration à partir d'un modèle. Contient des informations de configuration, une description, un chemin et un nom. Il est utilisé directement par la plateforme elle-même lors de la création d'une base d'informations 1C à partir d'un modèle.

*.grs- des fichiers de schémas graphiques dans un format 1C spécialisé. S'ouvre via le Configurateur ou en mode 1C:Entreprise via « fichier -> ouvrir ». Il se crée de la même manière : en mode Configurateur ou dans 1C:Enterprise via « fichier -> nouveau ».

*.géo- des fichiers de schémas géographiques au format 1C spécialisé. S'ouvre via le Configurateur ou en mode 1C:Entreprise via « fichier -> ouvrir ». Il se crée de la même manière : en mode Configurateur ou dans 1C:Enterprise via « fichier -> nouveau ».

*.St- fichiers de modèles de texte. Utilisé principalement par les développeurs 1C.

*.pff- un fichier avec les mesures de performances enregistrées. Utilisé par les administrateurs système et les spécialistes 1C.

La structure interne du fichier de configuration (*.cf) n'est pas un secret. De bonnes personnes l'ont démonté il y a longtemps et ont créé de nombreux utilitaires intéressants qui vous permettent de travailler avec ce format. Sur Infostart, il existe une bonne douzaine (sinon plus) de publications intéressantes qui lisent d'une manière ou d'une autre le contenu des fichiers *.cf, ce sujet n'est donc pas du tout nouveau.

Malheureusement, il existe très peu de documentation de bonne qualité sur ce format. J'ai été inspiré pour écrire cet article par mon cher ami, qui a décrit en détail la structure du format de sécurité des informations sur les fichiers 1C:Enterprise (*.1CD).

Cet article, me semble-t-il, est devenu un catalyseur pour un certain nombre de développements créés par d’autres auteurs. L'ouverture et l'accessibilité de l'information ont stimulé l'activité créative des auteurs et l'ensemble de la communauté a reçu un certain nombre d'excellents outils pour travailler avec les bases de données de fichiers 1C.

Il me semble qu'une description détaillée du format CF intéressera également de nombreux auteurs, et peut-être aurons-nous l'occasion de voir beaucoup de nouveaux développements intéressants sur le thème des fichiers de configuration.

Arrière-plan

Comme mentionné ci-dessus, la structure du format est connue depuis longtemps et il existe des informations sur sa structure sur Internet (bien qu'assez rares). J'avais besoin de cette information Lors du développement du programme sur lequel je travaillais, je me suis appuyé sur les matériaux suivants :

  • , auteur
  • http://www.richmedia.us/post/2011/01/18/cf-file-format-1c-8-compatible.aspx, si je ne me trompe pas, l'auteur est
  • , auteur

Terminologie

Passons directement au sujet de notre discussion.

Afin de mettre les points sur les i, décidons du nom du format lui-même.

Premièrement, non seulement les fichiers de configuration sont créés dans ce format, mais également les fichiers externes de reporting et de traitement. Sur Internet, je suis tombé sur le nom de fichier composé. C'est peut-être bien établi parmi les anciens 1C, mais je ne l'aime pas vraiment.

Dans le cadre de cet article, je propose d’appeler ce format « récipient" Si le public respecté suggère le nom correct dans les commentaires, j'en serai très heureux.

Regardons à l'intérieur

Unité logique de stockage de données à l'intérieur récipient est document . Un document est un ensemble complet et significatif de données qui peuvent être lues et interprétées d’une manière ou d’une autre. Je n'utilise pas spécifiquement le terme " déposer", car je réserverai ce nom à une autre entité, dont nous parlerons un peu plus tard.

Ainsi, de manière générale, un fichier CF (EPF/ERF) est récipient , dans lequel ils sont stockés Documentation .

Chaque document à l'intérieur d'un conteneur peut être divisé en blocs . L'unité physique minimale de stockage de données est bloc, mais une unité logique significative est document. En d'autres termes, les documents à l'intérieur du conteneur peuvent se présenter sous la forme de morceaux épars ( blocs) et pour lire le contenu du document, tous ses éléments doivent être rassemblés et combinés.

Structure du conteneur

Le conteneur comprend les pièces suivantes (dans l'ordre) :

  1. En-tête du conteneur
    1. Adresse du premier bloc vide dans lequel des données peuvent être ajoutées
    2. Taille de bloc par défaut
    3. Nombre de fichiers dans le conteneur
  2. Document sur le contenu du conteneur
  3. Les données réelles répertoriées dans la table des matières

Pour lire le contenu du conteneur, vous devez lire le document table des matières. Cependant, puisque document comprend blocs, il faut alors d'abord apprendre à assembler un document complet à partir de ces mêmes blocs.

Structure de bloc

Un bloc est constitué d'un en-tête et d'un corps. L'en-tête indique la taille totale de l'ensemble du document, la taille du bloc actuel et l'adresse (position dans le fichier) du bloc suivant. Immédiatement après l'en-tête vient le corps du bloc - en fait, les données dont nous avons besoin. Le corps du bloc a exactement la longueur (en octets) spécifiée dans l'en-tête.

À l'intérieur du conteneur, ici et là, il y a une constante magique qui dénote un certain « vide » - c'est le nombre 0x7fffffff.

Lorsque nous assemblons un document à partir de blocs, nous regardons dans l'en-tête l'adresse du bloc suivant. S'il est égal à 0x7fffffff, alors il n'y a pas de bloc « suivant », celui-ci est le dernier.

La constante 0x7fffffff est la valeur de INT_MAX, c'est-à-dire la valeur maximale d'un entier signé de 4 octets.

"fichiers" logiques

J'ai mentionné que le terme " déposer"Je le garderai pour des temps meilleurs. Ces temps sont venus :)

L'intégralité de la configuration est stockée dans un conteneur sous la forme des dossiers. Si nous nous souvenons du cours d'informatique de l'école, nous nous souviendrons qu'un « fichier », nous a-t-on dit, est un nom document.

Un fichier diffère d'un « document » dans le sens où il porte un nom et peut être désigné par ce nom. Si nous analysons le contenu de la configuration et construisons une arborescence de métadonnées, nous trouverons de nombreuses références à d'autres fichiers à l'intérieur des fichiers. La procédure de lecture de la configuration opère sur les noms des dossiers et les désigne par leur nom.

Pour résumer, nous pouvons dire ceci : le conteneur contient différents Documentation, mais certains d'entre eux ont un nom. Ces documents sont appelés " des dossiers« Et ils ne sont pas de nature de service, mais de nature directement appliquée. Exactement des dossiers stocker les informations de métadonnées de configuration.

Composants de fichiers

Chaque fichier est composé de deux documents:

  1. Document d'attributs contenant le nom du fichier et les dates de création/modification
  2. Le document de contenu qui contient le corps réel du fichier

Maintenant que tous les composants ont été annoncés, il reste à considérer peut-être le document le plus important du conteneur - le document de table des matières, qui indique l'emplacement de tous les fichiers du conteneur. Comme mentionné ci-dessus, le document de table des matières est le tout premier document du conteneur et il vient immédiatement après le titre du conteneur.

  1. Adresse (offset fichier) du document d'attribut
  2. Adresse (offset de fichier) du document de contenu
  3. Numéro 0x7fffffff (marqueur de fin d'enregistrement).

Je vous rappelle que chaque document peut être divisé en blocs (fragmentés). L'algorithme d'assemblage d'un document à partir de blocs sera discuté ci-dessous.

L’entrée de la table des matières est un nombre significatif à 2 INT32. Le premier numéro est l'adresse du document d'attributs du fichier. Cette adresse nous amènera au début du 1er bloc du document d'attributs. À partir du document d'attributs, nous pouvons connaître le nom du fichier. Le deuxième numéro est l'adresse du document du contenu du fichier. A cette adresse, nous serons redirigés vers le début du 1er bloc du document de contenu, d'où nous lirons directement les données du fichier.

Caractéristiques de la compression des données.

Un conteneur peut contenir une grande variété de fichiers. En règle générale, il s'agit de fichiers texte codés en UTF-8. Cependant, parmi les fichiers conteneurs, il peut y avoir d'autres fichiers conteneurs. L'analogie la plus simple est avec un système de fichiers. Un conteneur est un répertoire et les fichiers à l'intérieur du conteneur sont son contenu. Un répertoire peut contenir d'autres répertoires.

Le répertoire racine de ce « système de fichiers » est le fichier *.CF lui-même. À l'intérieur, il peut y avoir d'autres fichiers conteneurs, essentiellement des répertoires imbriqués, qui sont lus en utilisant exactement le même algorithme et ont exactement la même structure.

Cependant, le répertoire racine présente une particularité. Tous documents de contenu les fichiers du répertoire racine sont compressés à l’aide de l’algorithme Deflate. Le contenu des fichiers dans les répertoires imbriqués n'est plus compressé. En termes simples, au niveau supérieur d'un fichier conteneur, les corps de tous les fichiers sont compressés, mais si le fichier à l'intérieur du conteneur est lui-même un conteneur, alors les fichiers qu'il contient seront déjà écrits sous leur forme pure (sans compression).

Chaîne de blocs gratuits

La suppression de données d'un conteneur peut entraîner la création d'espaces vides. Ces espaces libres s'enchaînent en chaîne et forment une sorte de « document » dont les données manquent. En d'autres termes, les blocs libres sont connectés les uns aux autres selon le même principe selon lequel les blocs de documents sont connectés les uns aux autres. L'adresse du premier bloc libre est indiquée au tout début de l'en-tête du conteneur. Si l'adresse d'un bloc libre est INT_MAX, cela signifie qu'il n'y a pas de blocs libres (vides) au milieu du conteneur.

Bref résumé de la partie théorique

  1. Le fichier CF(EPF/ERF) est écrit au format « conteneur »
  2. Le conteneur commence par un en-tête
  3. Tout le contenu du conteneur, à l'exception de l'en-tête, est écrit sous forme de « documents ».
  4. Le document peut être divisé en blocs
  5. Le document commence par un titre de bloc, qui vous indique comment lire l'intégralité du document.
  6. Immédiatement après le titre du conteneur se trouve un document de table des matières.
  7. Une table des matières est une collection d'entrées qui pointent vers " des dossiers» à l'intérieur du conteneur
  8. Chaque fichier se compose de deux documents : un document d'attributs, où le nom de ce fichier est indiqué, et un document de contenu, où se trouvent réellement les données du fichier.
  9. Chaque entrée de la table des matières contient 2 adresses. La première est l'adresse du document d'attributs du fichier, la seconde est l'adresse du document de contenu.
  10. Un conteneur peut contenir des conteneurs imbriqués (comme des dossiers imbriqués)
  11. Les fichiers à l'intérieur du conteneur racine sont compressés à l'aide de l'algorithme Deflate, les fichiers à l'intérieur des conteneurs imbriqués sont écrits sans compression.

Sentons déjà les octets

Il est donc temps de réfléchir à la manière exacte dont sont structurées toutes les entités mentionnées ci-dessus.

Le principal moyen de lire les données d'un conteneur est de lire la chaîne de blocs qui composent certains documents. Il semble que le bon point de départ soit le principe de la lecture de documents en bloc.

Lire un document en blocs

Chaque document d'un conteneur doit commencer par un en-tête de bloc. Dans ce cas, le document peut être divisé en plusieurs blocs. Pour lire un document, vous devez « l'assembler » à partir de blocs.

Ainsi, l’en-tête du bloc est une chaîne de 31 octets. Cette ligne ressemble à ceci :

[Taille du document entier][Espace][Taille du bloc courant][Espace][Adresse du bloc suivant][Espace] , où :

  • CRLF - saut de ligne Windows standard, paire de caractères \r\n (0x0D,0x0A)
  • Taille entière du document : la longueur totale du document en octets. Écrit sous la forme d'une représentation sous forme de chaîne d'un nombre hexadécimal. Longueur - 8 octets.
  • Espace - espace. Symbole 0x20
  • La taille du bloc actuel correspond à la longueur du corps du bloc en octets. Il est également écrit sous la forme d'une représentation sous forme de chaîne d'un nombre INT32 au format hexadécimal. Si le document est constitué d'un seul bloc, alors la taille du document entier est soit plus petite, soit identique à la taille du bloc actuel (ce qui est logique)
  • Adresse du bloc suivant - l'adresse à laquelle se trouve le bloc suivant du document. Si l'adresse du bloc suivant est INT_MAX, cela signifie qu'il n'y a pas de bloc suivant. L'adresse du bloc suivant est également écrite sous la forme d'une représentation sous forme de chaîne d'un nombre.

Immédiatement après l'en-tête du bloc se trouve le corps du bloc, qui a la longueur spécifiée dans le champ « Taille actuelle du bloc ».

Regardons l'image : la longueur de l'ensemble du document est de 0x54 octets, ces 0x54 octets sont mis en évidence par un cadre rouge. Il s'agit de données de document. La longueur du bloc est de 0x200 octets, c'est-à-dire plus long que la longueur du document lui-même. Pour cette raison, les données restantes dans le bloc constituent des « zéros » d’espace inutilisé. Les octets significatifs sont ceux marqués d'un cadre rouge.

Si la longueur du document est supérieure à la longueur du bloc, alors le bloc suivant doit être lu. Si une valeur autre que 0x7fffffff est écrite dans le champ « Adresse du bloc suivant », alors vous devez lire le bloc actuel, puis vous rendre à cette adresse et lire un autre bloc. Si ce bloc contient également l'adresse du bloc suivant, vous devez également vous y rendre. Ainsi, une « chaîne » de blocs est formée qui composent le document.

La lecture doit se poursuivre jusqu'à ce que la valeur 0x7fffffff soit rencontrée dans le champ « Adresse du bloc suivant » ou jusqu'à ce que le nombre d'octets spécifié dans le champ « Taille du document entier » soit lu.

Le champ « Taille entière du document » n'a de sens que pour le premier bloc. Dans tous les blocs suivants du document, il a la valeur 0x00000000.

Format d'en-tête de conteneur

L'en-tête du conteneur fait 16 octets et se compose des champs suivants :

Champ

Explication

Adresse du premier bloc libre

INT32 (4 octets)

Le décalage auquel commence la chaîne de blocs libres

Taille de bloc par défaut

INT32 (4 octets)

Un bloc peut avoir n'importe quelle longueur, mais la longueur par défaut peut être utilisée pour ajouter de nouveaux blocs, par exemple.

Champ à destination inconnue (voir commentaires sur l'article) Coïncide souvent avec le nombre de fichiers dans le conteneur

INT32 (4 octets)

Un nombre qui reflète une certaine valeur, coïncidant généralement avec le nombre de fichiers dans le conteneur, cependant, des collègues dans les commentaires estiment que ce n'est pas tout à fait vrai. Ce numéro n'affecte en rien l'algorithme d'interprétation du conteneur ; il peut être ignoré.

Champ réservé

INT32 (4 octets)

Toujours égal à 0 (est-ce toujours ?)

Table des matières Format d'enregistrement du document

Attributs du fichier Format du document

Le document d'attributs décrit le nom du fichier et les dates de création/modification.

Champ

Explication

Heure de création du fichier

UINT64 (8 octets)

Temps de création du fichier, exprimé en nombre d'intervalles de 100 microsecondes depuis le début de notre ère (01/01/0001 00:00:00)

Heure de modification du fichier

UINT64 (8 octets)

De même

Champ réservé

INT32 (4 octets)

Toujours 0. Il s'agit peut-être d'indicateurs d'attribut, comme en lecture seule, masqué, etc. Cependant, je n'ai pas rencontré de fichiers dans lesquels ce champ diffère de zéro.

Nom de fichier

Chaîne au format UTF-16

Occupe tout le corps restant du document (moins 2 dates et un champ de réserve)

Principe de lecture des conteneurs

  1. Assemblez un document de table des matières à partir de blocs et lisez-le
  2. Parcourez toutes les entrées du document de table des matières et lisez les attributs du document (noms) des fichiers conteneurs
  3. Mappez chaque nom reçu à l'adresse du document de contenu
  4. Le résultat est la correspondance « Nom du fichier » -> « Adresse du contenu »

Lecture de fichiers

  1. Par nom de fichier, obtenez l'adresse du document de contenu à partir de la table des matières
  2. Assembler un document de contenu à partir de blocs
  3. S'il s'agit du conteneur racine, décompressez le document de contenu (il est compressé)
  4. Prêt. Le résultat résultant est les données du fichier recherché.

Mise à jour du 25/02/2014

Enfin

Cet article n’est pas la vérité ultime ; il contient probablement même des erreurs. Cependant, si ce sujet vous intéresse, alors j'espère que cet article vous aidera dans la mise en œuvre de vos projets. Bonne chance!