Méthode IRegistryKey ::NewSubKey (portcls.h)

La NewSubKey méthode crée une sous-clé de Registre ou ouvre une sous-clé existante sous la clé représentée par l’objet IRegistryKey .

Syntaxe

NTSTATUS NewSubKey(
  [out]           IRegistryKey    **RegistrySubKey,
  [in]            PUNKNOWN        OuterUnknown,
  [in]            ACCESS_MASK     DesiredAccess,
  [in]            PUNICODE_STRING SubKeyName,
  [in]            ULONG           CreateOptions,
  [out, optional] PULONG          Disposition
);

Paramètres

[out] RegistrySubKey

Pointeur de sortie pour la nouvelle sous-clé. Ce paramètre pointe vers une variable de pointeur allouée par l’appelant dans laquelle la méthode écrit le pointeur vers le nouvel objet IRegistryKey . Cet objet représente la sous-clé en cours d’ouverture ou de création. Spécifiez une valeur de pointeur non NULL valide pour ce paramètre.

[in] OuterUnknown

Pointeur vers l’interface IUnknown d’un objet qui doit agréger l’objet de clé de Registre. Ce paramètre est facultatif. Si l’agrégation n’est pas requise, spécifiez ce paramètre sur NULL.

[in] DesiredAccess

Spécifie le type d’accès requis par l’appelant à la sous-clé en cours d’ouverture ou de création. Ce paramètre est de type ACCESS_MASK. Pour plus d'informations, consultez la section Notes qui suit.

[in] SubKeyName

Pointeur vers le nom à affecter à la sous-clé. Ce paramètre doit être un pointeur non NULL valide vers une structure initialisée de type UNICODE_STRING.

[in] CreateOptions

Indicateurs indiquant les options de création. Peut être égal à zéro si aucun n’est souhaité. Ce paramètre est requis si la valeur de RegistryKeyType est GeneralRegistryKey ; sinon, la méthode n’utilise pas ce paramètre. Pour plus d'informations, consultez la section Notes qui suit.

[out, optional] Disposition

Pointeur de sortie pour la valeur de destruction. Ce paramètre pointe vers une variable ULONG allouée par l’appelant dans laquelle la méthode écrit une valeur status indiquant si une clé a été créée ou si une clé existante a été ouverte. Ce paramètre est facultatif et peut être spécifié comme NULL si l’appelant n’en a pas besoin. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

NewSubKey retourne STATUS_SUCCESS si l’appel a réussi à sortir un pointeur IRegistryKey valide via le paramètre RegistrySubKey . Sinon, la méthode retourne un code d’erreur approprié.

Remarques

La NewSubKey méthode ouvre la clé de Registre spécifiée si elle existe déjà, ou crée une clé dans le Registre si elle n’existe pas. La méthode génère un pointeur vers l’interface IRegistryKey de la nouvelle clé via le paramètre RegistrySubKey . La méthode génère également une valeur status via le paramètre facultatif Disposition pour indiquer si la clé a été ouverte ou créée.

Les paramètres DesiredAccess, CreateOptions et Disposition prennent les valeurs définies pour les paramètres portant les mêmes noms dans l’appel PcNewRegistryKey .

Le paramètre DesiredAccess est un masque de contrôle d’accès qui spécifie le type de contrôle d’accès que l’appelant doit avoir à la sous-clé lors de l’accès à celle-ci via l’objet RegistrySubKey . Ce masque ne doit pas être confondu avec la liste de contrôle d’accès (ACL) qui contrôle l’accès des utilisateurs à la sous-clé de Registre. Lorsque la fonction PcNewRegistryKey ou la méthode IPort ::NewRegistryKey crée une clé de Registre de type GeneralRegistryKey, le paramètre ObjectAttributes spécifie les attributs de la clé, y compris un descripteur de sécurité qui contient la liste de contrôle d’accès. Toutefois, lorsque la NewSubKey méthode crée une sous-clé de Registre, cette sous-clé hérite simplement de la liste de contrôle d’accès de sa clé parente. La NewSubKey méthode ne fournit aucun moyen de spécifier une liste de contrôle d’accès qui diffère de celle de la clé parente.

Les paramètres RegistrySubKey et OuterUnknown suivent les conventions de comptage des références pour les objets COM.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête portcls.h (include Portcls.h)
IRQL PASSIVE_LEVEL

Voir aussi

ACCESS_MASK

IPort ::NewRegistryKey

IRegistryKey

PcNewRegistryKey

UNICODE_STRING