RTL_QUERY_REGISTRY_ROUTINE fonction de rappel (wdm.h)
La routine QueryRoutine fournit des informations sur une valeur de Registre qui a été 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 comme en lecture seule. Pour plus d’informations sur le type de données de valeur vers lequel pointe ValueData , consultez la définition du paramètre Type dans KEY_VALUE_BASIC_INFORMATION.
[in] ValueLength
Spécifie la longueur, en octets, de la valeur vers laquelle ValueData pointe.
[in, optional] Context
Spécifie la valeur du paramètre Context que le pilote a spécifiée 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 a spécifié dans l’appel précédent à RtlQueryRegistryValues.
Valeur retournée
QueryRoutine retourne STATUS_SUCCESS si l’appel réussit. Sinon, il retourne une erreur appropriée status code. Utilisez uniquement status codes 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 passe un pointeur, en tant que paramètre d’entrée, vers un tableau de structures RTL_QUERY_REGISTRY_TABLE . Chaque structure de ce tableau contient un pointeur vers une routine QueryRoutine implémentée par le pilote et une demande d’informations sur une valeur de Registre particulière. Pour chaque structure du tableau, RtlQueryRegistryValues appelle la routine QueryRoutine 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 fonction de rappel aide l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification à la recherche d’erreurs. Il s’agit d’une exigence pour l’écriture de 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 la configuration requise pour les 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 Annotating Function Behavior.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | Appelé à PASSIVE_LEVEL. |