> Tech > L’espace de noms et le fonctionnement du Registre

L’espace de noms et le fonctionnement du Registre

Tech - Par iTPro - Publié le 24 juin 2010
email

Le Gestionnaire de configurations définit un type d'objet key object pour intégrer l'espace de noms du Registre dans l'espace de noms général du kernel. Le Gestionnaire de configurations insère un objet clé baptisé REGISTRY dans la racine d'un espace de noms NT qui sert de point d'entrée au Registre. Regedit

L’espace de noms et le fonctionnement du Registre

montre les noms de
clés sous la forme HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet, mais le sous-système
Win32 traduit ce type de noms sous leur forme d’objets NT (par exemple \Registry\Machine\System\CurrentControlSet).

Lorsque le Gestionnaire d’objets NT analyse ce nom, il rencontre d’abord l’objet
clé du Registre et transmet le reste du nom au Gestionnaire de configurations.
Ce dernier prend en charge l’analyse du nom, en parcourant son arborescence de
ruches pour trouver la clé ou la valeur désirée.Avant de décrire le flux de contrôle
d’une opération de Registre classique, je voudrais parler des objets clés et des
blocs de contrôle de clés. Chaque fois qu’une application ouvre ou crée une clé
de Registre, le Gestionnaire d’objets donne un pointeur à  l’application pour désigner
la clé. Le pointeur correspond à  un objet clé alloué par le Gestionnaire de configurations
avec l’aide du Gestionnaire d’objets. En utilisant le Gestionnaire d’objets, le
Gestionnaire de configurations profite de ses fonctionnalités de sécurité et de
comptage de références.

Le Gestionnaire de configurations alloue aussi à  chaque clé de Registre ouverte
un bloc de contrôle de clé. Celui-ci stocke le nom d’accès complet de la clé et
lui ajoute l’index de cellule de la clé à  laquelle il renvoie ainsi qu’un drapeau
indiquant à  quel endroit le Gestionnaire de configurations doit supprimer la cellule
de la clé à  laquelle il renvoie, lors de la fermeture du dernier pointeur de la
clé. Windows NT stocke tous les blocs de contrôle de clés en ordre alphabétique
pour permettre des recherches rapides par nom des blocs de contrôle de clés existants.
Si deux applications ouvrent la même clé de Registre, chacune recevra un objet
clé et ces deux objets clés désigneront un bloc de contrôle de clé commun.

Lors de l’ouverture d’une clé de Registre existante par une application, le flux
de contrôle, démarre par la spécification par l’application du nom de la clé dans
une API du Registre qui appelle le sous-programme d’analyse des noms du Gestionnaire
d’objets.
Ce dernier, en rencontrant l’objet clé du Registre du Gestionnaire de configurations,
transmet le nom d’accès au Gestionnaire de configurations. Ce dernier utilise
les structures de données des ruches en mémoire pour rechercher la clé spécifiée
parmi les clés et les sous-clés. S’il trouve la cellule de la clé, le Gestionnaire
de configurations parcourt l’arborescence des blocs de contrôle des clés pour
déterminer si la clé est ouverte (par la même application ou par une autre).

Si tel est le cas, il incrémente le compte de référence du bloc de contrôle de
la clé existante. Sinon il alloue un nouveau bloc de contrôle de clé et l’insère
dans l’arborescence. Puis il alloue un objet clé, le désigne au bloc de contrôle
de clé et rend la main au Gestionnaire d’objets, lequel renvoie un pointeur à 
l’application.Lorsqu’une application crée une nouvelle clé de Registre, le Gestionnaire
de configurations trouve d’abord la cellule de la clé pour la nouvelle parente.
Puis il parcourt la liste des cellules libres, afin de déterminer s’il existe
des cellules suffisamment grandes pour contenir la ruche de la nouvelle clé.
Sinon le Gestionnaire de configurations alloue un nouveau bin et l’utilise pour
la cellule en plaçant tout espace se trouvant à  la fin du bin dans la liste des
cellules libres. La cellule de la nouvelle clé se remplit d’informations pertinentes
– notamment le nom de la clé – et le Gestionnaire de configurations l’ajoute à 
la liste de sous-clés de la clé parente. Enfin, le système stocke l’index de cellule
de la cellule parente dans la cellule de clé de la nouvelle sous-clé.

Le Gestionnaire de configurations utilise un compte de référence du bloc de contrôle
de clé pour déterminer à  quel moment supprimer ce bloc. A la fermeture de tous
les pointeurs désignant une clé dans un bloc de contrôle de clé, le compte de
référence passe à  zéro, prouvant ainsi qu’il n’est plus nécessaire.
Si une application appelant une API pour supprimer la clé met le drapeau suppression,
le Gestionnaire de configurations peut supprimer la clé associée de la ruche de
la clé car il sait qu’aucune application n’active la clé.

Téléchargez gratuitement cette ressource

*** SMART DSI *** VERSION NUMÉRIQUE

*** SMART DSI *** VERSION NUMÉRIQUE

Découvrez SMART DSI, la nouvelle revue du Décideur IT en version numérique. Analyses et dossiers experts pour les acteurs de la transformation numérique de l'entreprise, Gagnez en compétences et expertise IT Professionnelle avec le contenu éditorial premium de SMART DSI.

Tech - Par iTPro - Publié le 24 juin 2010