Prise en charge des pilotes de filtrage du Registre en couches

Windows Vista et les versions ultérieures du système d’exploitation prennent en charge une pile en couches de pilotes de filtrage du Registre. Chaque pilote de la pile peut participer au filtrage des opérations de Registre en inscrivant une routine RegistryCallback . Une altitude est attribuée à chaque pilote de filtrage du Registre et les pilotes ne peuvent inscrire qu’une seule routine RegistryCallback pour chaque altitude. Lorsque votre pilote appelle CmRegisterCallbackEx, le pilote spécifie son altitude. Pour plus d’informations sur les altitudes, consultez Groupes d’ordre de chargement et Altitudes pour les pilotes de minifiltre.

Lorsqu’un thread effectue un appel au Registre, le gestionnaire de configuration appelle chaque routine RegistryCallback, dans l’ordre, de l’altitude la plus élevée à la plus basse, jusqu’à ce que tous les pilotes aient été appelés ou qu’une routine RegistryCallback retourne une valeur status pour laquelle NT_SUCCESS(status) est égal àFALSE. Par conséquent, si un pilote de niveau supérieur bloque ou modifie une opération de Registre, les pilotes de niveau inférieur ne sont pas appelés. (Si un pilote modifie une opération en appelant une autre fonction de Registre, le gestionnaire de configuration ne redémarre pas en haut de la pile de filtres.)

Les pilotes de filtrage du Registre qui ont été écrits avant Windows Vista et qui n’ont donc pas d’affectation d’altitude sont insérés en haut de la pile de filtres Windows Vista, dans l’ordre dans lequel ils appellent CmRegisterCallback.