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 WdfUsbTargetDeviceSelectConfig sélectionne une configuration USB pour un appareil ou désconfigure l’appareil.
Syntaxe
NTSTATUS WdfUsbTargetDeviceSelectConfig(
[in] WDFUSBDEVICE UsbDevice,
[in, optional] PWDF_OBJECT_ATTRIBUTES PipeAttributes,
[in, out] PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params
);
Paramètres
[in] UsbDevice
Handle vers un objet de périphérique USB obtenu à partir d’un appel précédent à WdfUsbTargetDeviceCreateWithParameters.
[in, optional] PipeAttributes
Pointeur vers une structure WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui contient des attributs pour les nouveaux objets de canal USB d’infrastructure créés par l’infrastructure pour les interfaces de l’appareil. Pour les pilotes KMDF, ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES. Les pilotes UMDF doivent définir ce paramètre sur NULL.
[in, out] Params
Pointeur vers une structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMS allouée par l’appelant et l’infrastructure pour spécifier les paramètres de configuration.
Valeur de retour
WdfUsbTargetDeviceSelectConfig retourne la valeur d’état d’achèvement de la cible d’E/S si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
| Retourner le code | Descriptif |
|---|---|
|
Un paramètre non valide a été détecté. |
|
Le membre Size de la structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMS qui params points était incorrect. |
|
Impossible d’allouer une mémoire tampon mémoire. |
|
L’infrastructure retourne cette valeur si un pilote UMDF appelle WdfUsbTargetDeviceSelectConfig avec Params->Type défini sur l’une des valeurs suivantes :
|
Cette méthode peut également retourner d’autres valeurs NTSTATUS .
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Remarques
Votre pilote peut sélectionner une configuration de périphérique à l’aide d’une structure de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS pour spécifier des descripteurs USB, un URB ou des handles pour l’infrastructure d’objets d’interface USB.
L’infrastructure crée un objet de canal USB framework pour chaque canal associé à chaque interface de la configuration, après la suppression d’objets de canal que l’infrastructure a pu créer précédemment pour la configuration. L’infrastructure utilise un paramètre de remplacement zéro pour chaque interface, sauf si le pilote spécifie un autre paramètre.
Pour obtenir des informations sur les objets de canal d’une interface, le pilote peut appeler WdfUsbInterfaceGetNumConfiguredPipes et WdfUsbInterfaceGetConfiguredPipe.
Pour plus d’informations sur la méthode WdfUsbTargetDeviceSelectConfig et les cibles d’E/S USB, consultez cibles d’E/S USB.
Vous pouvez utiliser WdfUsbTargetDeviceSelectConfig pour sélectionner uniquement la première configuration USB répertoriée dans la liste des descripteurs, mais vous pouvez sélectionner plusieurs interfaces dans cette configuration unique.
Exemples
L’exemple de code suivant sélectionne une configuration avec une seule interface spécifiée.
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS configParams;
NTSTATUS status;
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE(&configParams);
status = WdfUsbTargetDeviceSelectConfig(
UsbDevice,
WDF_NO_OBJECT_ATTRIBUTES,
&configParams
);
L’exemple de code suivant sélectionne une configuration avec plusieurs interfaces, en utilisant un autre paramètre zéro sur toutes les interfaces. Cet exemple s’applique uniquement aux pilotes KMDF.
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS configParams;
PWDF_USB_INTERFACE_SETTING_PAIR settingPairs;
UCHAR numInterfaces;
NTSTATUS status;
numInterfaces = WdfUsbTargetDeviceGetNumInterfaces(UsbDevice);
settingPairs = ExAllocatePoolWithTag(
PagedPool,
sizeof(WDF_USB_INTERFACE_SETTING_PAIR) * numInterfaces,
MY_DRIVER_TAG
);
if (settingPairs == NULL){
return STATUS_INSUFFICIENT_RESOURCES;
}
for (interfaceIndex = 0; interfaceIndex < numInterfaces; interfaceIndex++) {
settingPairs[interfaceIndex].UsbInterface =
WdfUsbTargetDeviceGetInterface(
UsbDevice,
interfaceIndex);
// Select alternate setting zero on all interfaces.
settingPairs[interfaceIndex].SettingIndex = 0;
}
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES(
&configParams,
numInterfaces,
settingPairs
);
status = WdfUsbTargetDeviceSelectConfig(
UsbDevice,
NULL,
&configParams
);
if (settingPairs != NULL) {
ExFreePoolWithTag(
settingPairs,
MY_DRIVER_TAG
);
return status;
}
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1,0 |
| version minimale de UMDF | 2.0 |
| d’en-tête | wdfusb.h (include Wdfusb.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), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf) |
Voir aussi
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE
WdfUsbInterfaceGetConfiguredPipe