Partager via


RTL_QUERY_REGISTRY_ROUTINE fonction de rappel (wdm.h)

La routine QueryRoutine fournit des informations sur une valeur de Registre demandée dans un appel précédent à la routine RtlQueryRegistryValues.

Syntaxe

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

Paramètres

[in] ValueName

Spécifie la clé de Registre associée à la valeur de Registre demandée. Ce paramètre est un pointeur vers une chaîne Unicode terminée par null qui contient la clé.

[in] ValueType

Spécifie le type de valeur de Registre stocké avec la clé de Registre spécifiée. Pour plus d’informations sur les types de valeurs de Registre, consultez la définition du paramètre type dans KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Pointeur vers la valeur de données associée à la clé de Registre spécifiée. Le pilote doit traiter cette valeur en lecture seule. Pour plus d’informations sur le type de données de valeur vers lequel ValueData pointe, consultez la définition du paramètre type dans KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Spécifie la longueur, en octets, de la valeur à laquelle ValueData pointe.

[in, optional] Context

Spécifie la valeur du paramètre context que le pilote spécifié dans l’appel précédent à RtlQueryRegistryValues.

[in, optional] EntryContext

Spécifie une valeur EntryContext dans un élément de tableau QueryTable que le pilote spécifié dans l’appel précédent à RtlQueryRegistryValues.

Valeur de retour

QueryRoutine retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’état d’erreur approprié. Utilisez uniquement les codes d’état définis dans le fichier d’en-tête Ntstatus.h.

Remarques

Un pilote en mode noyau implémente une routine QueryRoutine. Cette routine est appelée par la routine RtlQueryRegistryValues.

Pour obtenir des informations sur une ou plusieurs valeurs de Registre, le pilote appelle RtlQueryRegistryValues et transmet un pointeur, en tant que paramètre d’entrée, à un tableau de structures RTL_QUERY_REGISTRY_TABLE. Chaque structure de ce tableau contient un pointeur vers une QueryRoutine implémentée routine et une demande d’informations sur une valeur de Registre particulière. Pour chaque structure du tableau, RtlQueryRegistryValues appelle la routine QueryRou tine spécifiée et passe à cette routine un ensemble de paramètres qui contiennent les informations demandées sur la valeur de Registre spécifiée.

Pour plus d’informations sur la structure RTL_QUERY_REGISTRY_TABLE, consultez RtlQueryRegistryValues.

Exemples

Pour définir une routine de rappel QueryRoutine, vous devez d’abord fournir une déclaration de fonction qui identifie le type de routine de rappel que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonctions de rappel permet d'Analyse du code pour les pilotes, static Driver Verifier (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une routine de rappel QueryRoutine nommée MyQueryRoutine, utilisez le type RTL_QUERY_REGISTRY_ROUTINE comme indiqué dans cet exemple de code :

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

Ensuite, implémentez votre routine de rappel comme suit :

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

Le type de fonction RTL_QUERY_REGISTRY_ROUTINE est défini dans le fichier d’en-tête Wdm.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les outils d’analyse du code, veillez à ajouter l’annotation _Use_decl_annotations_ à votre définition de fonction. L’annotation _Use_decl_annotations_ garantit que les annotations appliquées au type de fonction RTL_QUERY_REGISTRY_ROUTINE dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur les exigences relatives aux déclarations de fonction, consultez déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes WDM. Pour plus d’informations sur _Use_decl_annotations_, consultez annoter le comportement de la fonction.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Appelé à PASSIVE_LEVEL.

Voir aussi

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues