Partager via


Objets de clé de Registre

Le pilote système PortCls implémente l’interface IRegistryKey au profit des pilotes miniport. Un objet IRegistryKey représente une clé de Registre. Les pilotes miniport utilisent des objets de clé de Registre pour effectuer les opérations suivantes :

  • Créer et supprimer des clés de Registre

  • Énumérer les clés de Registre

  • Interroger et définir des clés de Registre

Lors de l’interrogation d’un objet de clé de Registre pour obtenir des informations sur une entrée de Registre sous la clé spécifiée, la requête peut générer les informations dans l’un des trois formats, chacun d’entre eux utilisant une structure clé-requête différente. Le tableau suivant montre les valeurs d’énumération KEY_INFORMATION_CLASS qui indiquent laquelle des trois structures de requête clé est sortie par la requête.

valeur KEY_INFORMATION_CLASS structure de Key-Query

KeyBasicInformation

KEY_BASIC_INFORMATION

KeyFullInformation

KEY_FULL_INFORMATION

KeyNodeInformation

KEY_NODE_INFORMATION

Pour ouvrir une clé de Registre existante ou créer une nouvelle clé de Registre, un pilote d’adaptateur peut appeler la fonction PcNewRegistryKey , et un pilote miniport peut appeler la méthode IPort::NewRegistryKey du pilote de port. Les deux appels sont similaires, sauf que la fonction PcNewRegistryKey nécessite deux paramètres supplémentaires, DeviceObject et SubDevice. Pour plus d’informations, consultez PcNewRegistryKey.

Lorsqu’un pilote miniport crée un objet IRegistryKey , l’objet ouvre une sous-clé existante ou crée une sous-clé de Registre si aucune n’existe. Dans les deux cas, l’objet de clé de Registre stocke le handle dans la clé. Lorsque cet objet est libéré ultérieurement et que son nombre de références décrémente à zéro, l’objet ferme automatiquement son handle à la clé.

L’interface IRegistryKey prend en charge les méthodes suivantes :

IRegistryKey::D eleteKey

IRegistryKey::EnumerateKey

IRegistryKey::EnumerateValueKey

IRegistryKey::NewSubKey

IRegistryKey::QueryKey

IRegistryKey::QueryRegistryValues

IRegistryKey::QueryValueKey

IRegistryKey::SetValueKey