WdfRegistryQueryUnicodeString, fonction (wdfregistry.h)
[S’applique à KMDF et UMDF]
La méthode WdfRegistryQueryUnicodeString récupère les données de chaîne actuellement affectées à une valeur de chaîne de Registre spécifiée et copie la chaîne dans une structure de UNICODE_STRING spécifiée.
Syntaxe
NTSTATUS WdfRegistryQueryUnicodeString(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[out, optional] PUSHORT ValueByteLength,
[in, out] PUNICODE_STRING Value
);
Paramètres
[in] Key
Handle d’un objet de clé de Registre qui représente une clé de Registre ouverte.
[in] ValueName
Pointeur vers une structure UNICODE_STRING qui contient un nom pour la valeur de Registre.
[out, optional] ValueByteLength
Pointeur vers un emplacement qui reçoit le nombre d’octets contenus dans la chaîne Unicode vers laquelle la valeur pointe, y compris l’octet NULL de fin. Ce pointeur est facultatif et peut avoir la valeur NULL
[in, out] Value
Pointeur vers une structure de UNICODE_STRING qui reçoit la chaîne de données de la clé spécifiée par la clé . Si ce paramètre a la valeur NULL et que ValueByteLength n’a pas la valeur NULL, WdfRegistryQueryUnicodeString retourne uniquement la taille de la chaîne.
Valeur retournée
WdfRegistryQueryUnicodeString retourne STATUS_SUCCESS si l’opération réussit. Sinon, la méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
WdfRegistryQueryUnicodeString n’a pas été appelé à IRQL = PASSIVE_LEVEL. |
|
Un paramètre non valide a été spécifié. |
|
La mémoire était insuffisante pour terminer l’opération. |
|
Le pilote n’a pas ouvert la clé de Registre avec un accès KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS. |
|
Type de données de la valeur de Registre que le paramètre ValueName a spécifié n’a pas été REG_SZ. |
|
La mémoire tampon vers laquelle pointe le paramètre Value était trop petite et seules des données partielles ont été écrites dans la mémoire tampon. |
|
La mémoire tampon vers laquelle pointe le paramètre Value était trop petite et aucune donnée n’a été écrite dans la mémoire tampon. |
|
La valeur du Registre n’était pas disponible. |
Cette méthode peut également retourner d’autres valeurs NTSTATUS.
Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.
Remarques
Pour plus d’informations sur les objets de clé de Registre, consultez Utilisation du Registre dans les pilotes Framework-Based.
Exemples
L’exemple de code suivant, qui provient de l’exemple de pilote série , récupère la chaîne Unicode qui représente les données de chaîne attribuées à la valeur PortName sous la clé matérielle d’un appareil.
NTSTATUS
SerialReadSymName(
IN WDFDEVICE Device,
__out PWCHAR RegName,
IN OUT PUSHORT LengthOfRegName // In characters
)
{
NTSTATUS status;
WDFKEY hKey;
UNICODE_STRING value;
UNICODE_STRING valueName;
USHORT requiredLength;
value.Buffer = RegName;
value.MaximumLength = *LengthOfRegName;
value.Length = 0;
status = WdfDeviceOpenRegistryKey(
Device,
PLUGPLAY_REGKEY_DEVICE,
STANDARD_RIGHTS_ALL,
WDF_NO_OBJECT_ATTRIBUTES,
&hKey
);
if (NT_SUCCESS (status)) {
RtlInitUnicodeString(
&valueName,
L"PortName"
);
status = WdfRegistryQueryUnicodeString (
hKey,
&valueName,
&requiredLength,
&value
);
WdfRegistryClose(hKey);
}
return status;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfregistry.h (include Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |