Fonction IoOpenDeviceRegistryKey (wdm.h)

La routine IoOpenDeviceRegistryKey retourne un handle à un emplacement d’état du Registre pour un appareil particulier instance.

Syntaxe

NTSTATUS IoOpenDeviceRegistryKey(
  [in]  PDEVICE_OBJECT DeviceObject,
  [in]  ULONG          DevInstKeyType,
  [in]  ACCESS_MASK    DesiredAccess,
  [out] PHANDLE        DeviceRegKey
);

Paramètres

[in] DeviceObject

Pointeur vers l’objet d’appareil physique (PDO) de l’appareil instance pour lequel l’emplacement de l’état du Registre doit être ouvert.

[in] DevInstKeyType

Spécifie des indicateurs indiquant s’il faut ouvrir une clé matérielle spécifique au périphérique ou une clé logicielle spécifique au pilote. Les indicateurs indiquent également si la clé est relative au profil matériel actuel. Pour plus d’informations sur les clés matérielles et logicielles, consultez Présentation des clés de Registre pour les pilotes.

Les indicateurs sont définis comme suit :

PLUGPLAY_REGKEY_DEVICE

Ouvrez la clé matérielle de l’appareil, un emplacement d’état de registre spécifique à l’appareil qui contient des informations sur l’appareil. Cet indicateur ne peut pas être spécifié avec PLUGPLAY_REGKEY_DRIVER.

PLUGPLAY_REGKEY_DRIVER

Ouvrez la clé logicielle de l’appareil, un emplacement d’état du Registre spécifique au périphérique pour stocker des informations spécifiques au pilote. Cet indicateur ne peut pas être spécifié avec PLUGPLAY_REGKEY_DEVICE.

PLUGPLAY_REGKEY_CURRENT_HWPROFILE

Les profils matériels sont déconseillés et l’état ne doit pas être stocké par rapport à un profil matériel.

Ouvrez une clé relative au profil matériel actuel pour obtenir des informations sur le périphérique ou le pilote. Cela permet au pilote d’accéder aux informations de configuration spécifiques au profil matériel. L’appelant doit spécifier PLUGPLAY_REGKEY_DEVICE ou PLUGPLAY_REGKEY_DRIVER avec cet indicateur.

[in] DesiredAccess

Spécifie la valeur ACCESS_MASK qui représente l’accès dont l’appelant a besoin à la clé. Consultez la routine ZwCreateKey pour obtenir une description de chaque droit d’accès KEY_XXX .

[out] DeviceRegKey

Pointeur vers une mémoire tampon allouée à l’appelant qui, en cas de retour réussi, contient un handle vers l’emplacement d’état du Registre demandé.

Valeur retournée

IoOpenDeviceRegistryKey retourne STATUS_SUCCESS si l’appel a réussi. Les valeurs de retour d’erreur possibles sont les suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER Indique éventuellement que l’appelant a spécifié un ensemble illégal d’indicateurs DevInstKeyType ou fourni un DeviceObject qui n’est pas un PDO valide.

Remarques

Le pilote doit appeler ZwClose pour fermer le handle retourné par cette routine lorsque l’accès n’est plus nécessaire.

Les clés de Registre ouvertes par cette routine ne sont pas volatiles.

Les applications de configuration en mode utilisateur peuvent accéder à ces clés de Registre à l’aide de fonctions CM_Open_DevNode_Key ou d’informations sur l’appareil telles que SetupDiOpenDevRegKey ou SetupDiCreateDevRegKey.

Pour préremplir l’état dans ces emplacements d’état du Registre au moment de l’installation du package de pilotes, utilisez les directives INF AddReg dans un fichier INF.

Les appelants de IoOpenDeviceRegistryKey doivent s’exécuter sur IRQL = PASSIVE_LEVEL dans le contexte d’un thread système.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (voir la section Remarques)
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Voir aussi

Présentation des clés de Registre pour les pilotes

ACCESS_MASK

ZwCreateKey

ZwClose

Nœuds d’appareil et piles d’appareils