Partager via


ZwQueryKey, fonction (wdm.h)

La routine ZwQueryKey fournit des informations sur la classe d’une clé de Registre, ainsi que le nombre et les tailles de ses sous-clés.

Syntaxe

NTSYSAPI NTSTATUS ZwQueryKey(
  [in]            HANDLE                KeyHandle,
  [in]            KEY_INFORMATION_CLASS KeyInformationClass,
  [out, optional] PVOID                 KeyInformation,
  [in]            ULONG                 Length,
  [out]           PULONG                ResultLength
);

Paramètres

[in] KeyHandle

Gérez la clé de Registre pour obtenir des informations sur. Ce handle est créé par un appel réussi à ZwCreateKey ou ZwOpenKey.

[in] KeyInformationClass

Spécifie une valeur KEY_INFORMATION_CLASS qui détermine le type d’informations retournées dans la mémoire tampon KeyInformation .

[out, optional] KeyInformation

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit les informations demandées.

[in] Length

Spécifie la taille, en octets, de la mémoire tampon KeyInformation .

[out] ResultLength

Pointeur vers une variable qui reçoit la taille, en octets, des informations de clé demandées. Si ZwQueryKey retourne STATUS_SUCCESS, la variable contient la quantité de données retournées. Si ZwQueryKey retourne STATUS_BUFFER_OVERFLOW ou STATUS_BUFFER_TOO_SMALL, vous pouvez utiliser la valeur de la variable pour déterminer la taille de mémoire tampon requise.

Valeur retournée

ZwQueryKey retourne STATUS_SUCCESS en cas de réussite ou le code d’erreur approprié en cas d’échec. Les valeurs possibles du code d’erreur sont les suivantes :

Code de retour Descriptif
STATUS_BUFFER_OVERFLOW La mémoire tampon fournie est trop petite et seules les données partielles ont été écrites dans la mémoire tampon. * ResultLength est défini sur la taille minimale requise pour contenir les informations demandées.
STATUS_BUFFER_TOO_SMALL La mémoire tampon fournie est trop petite et aucune donnée n’a été écrite dans la mémoire tampon. * ResultLength est défini sur la taille minimale requise pour contenir les informations demandées.
STATUS_INVALID_PARAMETER Le paramètre KeyInformationClass n’est pas une valeur KEY_INFORMATION_CLASS valide.

Remarques

KeyHandle passé à ZwQueryKey doit avoir été ouvert avec KEY_QUERY_VALUE accès. Pour ce faire, transmettez KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS en tant que paramètre DesiredAccess à ZwCreateKey ou ZwOpenKey.

Si KeyInformationClass est KeyNameInformation ou KeyHandleTagsInformation, la condition KEY_QUERY_VALUE ne s’applique pas.

ZwQueryKey peut être utilisé pour obtenir des informations que vous pouvez utiliser pour allouer des mémoires tampons pour contenir des données de Registre, telles que la taille maximale des entrées de valeur ou des noms de sous-clé d’une clé, ou le nombre de sous-clés. Par exemple, vous pouvez appeler ZwQueryKey, utiliser les informations retournées pour allouer une mémoire tampon pour une sous-clé, appeler ZwEnumerateKey pour obtenir le nom de la sous-clé et passer ce nom à une routine de Registre RtlXxx.

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 « NtQueryKey » au lieu de « ZwQueryKey ».

Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment de la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Using Nt and Zw Versions of the Native System Services Routines.

Spécifications

Requirement Valeur
plateforme cible Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Voir aussi

KEY_BASIC_INFORMATION

KEY_CACHED_INFORMATION

KEY_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NAME_INFORMATION

KEY_NODE_INFORMATION

KEY_VIRTUALIZATION_INFORMATION

à l’aide de versions Nt et Zw des routines natives des services système

ZwClose

ZwEnumerateKey

ZwOpenKey