Partager via


fonction WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES (wdfusb.h)

[S’applique à KMDF et UMDF]

La fonction WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES initialise une structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMS afin qu’un pilote puisse configurer un appareil pour utiliser plusieurs interfaces.

Syntaxe

void WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES(
  [in, out]      PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params,
  [in, optional] UCHAR                                NumberInterfaces,
  [in, optional] PWDF_USB_INTERFACE_SETTING_PAIR      SettingPairs
);

Paramètres

[in, out] Params

Pointeur vers une structure de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS allouée par le pilote.

[in, optional] NumberInterfaces

Nombre d’éléments dans le tableau SettingPairs . Si SettingPairs n’a pas la valeur NULL, ce paramètre doit être supérieur à zéro.

[in, optional] SettingPairs

Tableau de structures WDF_USB_INTERFACE_SETTING_PAIR . Ce paramètre est facultatif et peut être NULL.

Valeur de retour

None

Remarques

Votre pilote peut utiliser la fonction WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES pour sélectionner une configuration si les interfaces de périphérique sont spécifiées par des handles vers des objets d’interface USB.

Votre pilote peut utiliser cette fonction si votre appareil possède une ou plusieurs interfaces USB.

La fonction WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES zéro la structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMS et définit le membre Size sur la taille de la structure.

Si numInterfaces ou SettingPairs a la valeur NULL, WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES définit le membre Type sur WdfUsbTargetDeviceSelectConfigTypeMultiInterface. Dans ce cas, l’infrastructure détermine le nombre d’interfaces dont vous disposez et active un autre paramètre zéro sur chacune d’elles. Utilisez ce paramètre si vous souhaitez utiliser par défaut un paramètre de remplacement zéro sur toutes les interfaces.

Si le paramètre numInterfaces et le paramètre SettingPairs ne sont pas NULL, cette fonction définit le membre Type de la structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMSsur WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs. Dans ce cas, vous pouvez spécifier un autre paramètre sur l’une des interfaces.

Pour initialiser une structure WDF_USB_DEVICE_SELECT_CONFIG_PARAMS , le pilote doit appeler l’une des fonctions suivantes :

Exemples

L’exemple de code suivant appelle WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE ou WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES, en fonction du nombre d’interfaces prises en charge par la configuration de l’appareil. Ensuite, l’exemple appelle WdfUsbTargetDeviceSelectConfig pour sélectionner une configuration.

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS params;
PWDF_USB_INTERFACE_SETTING_PAIR settingPairs;
UCHAR numInterfaces;

numInterfaces = WdfUsbTargetDeviceGetNumInterfaces(UsbDevice);

if (numInterfaces == 1){
    WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE(&params);
}
else {
    settingPairs = ExAllocatePoolWithTag(
                        PagedPool,
                        sizeof(WDF_USB_INTERFACE_SETTING_PAIR) * numInterfaces,
                        MEM_TAG
                        );
    if (settingPairs == NULL){
        return STATUS_INSUFFICIENT_RESOURCES;
    }

 //
 // Call driver-defined routine to populate the
    // WDF_USB_INTERFACE_SETTING_PAIR structures 
 // that ExAllocatePoolWithTag allocated.
 //
    InitSettingPairs(
                     UsbDevice,
                     settingPairs,
                     numInterfaces
                     );

    WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES(
                    &params,
                    numInterfaces,
                    settingPairs
                    );
}
status = WdfUsbTargetDeviceSelectConfig(
                                        UsbDevice,
                                        NULL,
                                        &params
                                        );
if (!NT_SUCCESS(status)) {
    return status;
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfusb.h (inclure Wdfusb.h)

Voir aussi

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_DECONFIG

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_INTERFACES_DESCRIPTORS

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_URB

WDF_USB_INTERFACE_SETTING_PAIR