Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique à KMDF et UMDF]
La méthode WdfDeviceQueryProperty récupère une propriété d’appareil spécifiée.
Syntaxe
NTSTATUS WdfDeviceQueryProperty(
[in] WDFDEVICE Device,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] ULONG BufferLength,
[out] PVOID PropertyBuffer,
[out] PULONG ResultLength
);
Paramètres
[in] Device
Handle vers un objet d’appareil framework.
[in] DeviceProperty
Énumérateur DEVICE_REGISTRY_PROPERTY-typé qui identifie la propriété de l’appareil à récupérer.
[in] BufferLength
Taille, en octets, de la mémoire tampon pointée par PropertyBuffer.
[out] PropertyBuffer
Pointeur fourni par l’appelant vers une mémoire tampon allouée par l’appelant qui reçoit les informations demandées. Le pointeur peut être NULL si le paramètre BufferLength est égal à zéro.
[out] ResultLength
Emplacement fourni par l’appelant qui, à son retour, contient la taille, en octets, des informations stockées dans PropertyBuffer. Si la valeur de retour de la fonction est STATUS_BUFFER_TOO_SMALL, cet emplacement reçoit la taille de mémoire tampon requise.
Valeur de retour
Si l’opération réussit, WdfDeviceQueryProperty retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :
| Retourner le code | Description |
|---|---|
|
La mémoire tampon fournie est trop petite pour recevoir les informations. |
|
La valeur de DeviceProperty spécifiée n’est pas valide |
|
Les pilotes de l’appareil n’ont pas encore signalé les propriétés de l’appareil. |
La méthode peut retourner d’autres valeurs NTSTATUS .
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Remarques
Avant de recevoir des données de propriété d’appareil, les pilotes appellent généralement la méthode WdfDeviceQueryProperty simplement pour obtenir la taille de mémoire tampon requise. Pour certaines propriétés, la taille des données peut changer entre le moment où la taille requise est retournée et lorsque le pilote appelle WdfDeviceQueryProperty à nouveau. Par conséquent, les pilotes doivent appeler WdfDeviceQueryProperty à l’intérieur d’une boucle qui s’exécute jusqu’à ce que l’état de retour ne soit pas STATUS_BUFFER_TOO_SMALL.
Il est préférable d’utiliser WdfDeviceQueryProperty uniquement si la taille de mémoire tampon requise est connue et inchangée, car dans ce cas, le pilote doit appeler WdfDeviceQueryProperty une seule fois. Si la taille de mémoire tampon requise est inconnue ou varie, le pilote doit appeler WdfDeviceAllocAndQueryProperty.
Vous pouvez également utiliser WdfDeviceQueryPropertyEx pour accéder aux propriétés d’appareil exposées via le modèle de propriété unifié.
Exemples
L’exemple de code suivant obtient la propriété devicepropertyBusTypeGuid d’un appareil. L’exemple appelle WdfDeviceQueryProperty au lieu de WdfDeviceAllocAndQueryProperty, car la longueur d’un GUID est connue.
GUID busTypeGuid;
ULONG resultLength = 0;
NTSTATUS status;
status = WdfDeviceQueryProperty(
device,
DevicePropertyBusTypeGuid,
sizeof(GUID),
(PVOID)&busTypeGuid,
&resultLength
);
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.0 |
| version minimale de UMDF | 2.0 |
| d’en-tête | wdfdevice.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) |