ZwOpenKey, fonction (wdm.h)

La routine ZwOpenKey ouvre une clé de Registre existante.

Syntaxe

NTSYSAPI NTSTATUS ZwOpenKey(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

Paramètres

[out] KeyHandle

Pointeur vers la variable HANDLE qui reçoit le handle vers la clé.

[in] DesiredAccess

Spécifie une valeur ACCESS_MASK qui détermine l’accès demandé à l’objet . Pour plus d’informations, consultez le paramètre DesiredAccess de ZwCreateKey.

[in] ObjectAttributes

Pointeur vers une structure OBJECT_ATTRIBUTES qui spécifie le nom de l’objet et d’autres attributs. Utilisez InitializeObjectAttributes pour initialiser cette structure. Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit définir l’attribut OBJ_KERNEL_HANDLE lorsqu’il appelle InitializeObjectAttributes.

Valeur retournée

ZwOpenKey retourne STATUS_SUCCESS si la clé donnée a été ouverte. Sinon, il peut retourner une erreur status, notamment les éléments suivants :

  • STATUS_INVALID_HANDLE

  • STATUS_ACCESS_DENIED

Remarques

ZwOpenKey fournit un handle que l’appelant peut utiliser pour manipuler une clé de Registre. La routine fournit un sous-ensemble des fonctionnalités de ZwCreateKey. Pour plus d’informations, consultez Utilisation du Registre dans un pilote.

Si la clé spécifiée n’existe pas, ZwOpenKey retourne une erreur status et ne retourne pas de handle de clé.

Une fois que le handle pointé par KeyHandle n’est plus utilisé, le pilote doit appeler ZwClose pour le fermer.

ZwOpenKey ignore les informations de sécurité dans la structure vers laquelle pointe le paramètre ObjectAttributes .

Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit s’assurer que tous les handles qu’il crée sont des handles privés. Sinon, le handle est accessible par le processus dans le contexte dans lequel le pilote est en cours d’exécution. Pour plus d’informations, consultez Handles d’objet.

Pour plus d’informations sur l’utilisation des clés de Registre, consultez Utilisation du Registre dans un pilote.

Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom « NtOpenKey » au lieu de « ZwOpenKey ».

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
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Voir aussi

ACCESS_MASK

InitializeObjectAttributes

ZwCreateKey

ZwDeleteKey

ZwEnumerateKey

ZwEnumerateValueKey

ZwFlushKey

ZwQueryKey

ZwQueryValueKey

ZwSetValueKey