función WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES (wdfusb.h)

[Se aplica a KMDF y UMDF]

La función WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES inicializa una estructura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS para que un controlador pueda configurar un dispositivo para que use varias interfaces.

Sintaxis

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
);

Parámetros

[in, out] Params

Puntero a una estructura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS asignada por el controlador.

[in, optional] NumberInterfaces

Número de elementos de la matriz SettingPairs . Si SettingPairs no es NULL, este parámetro debe ser mayor que cero.

[in, optional] SettingPairs

Matriz de estructuras de WDF_USB_INTERFACE_SETTING_PAIR . Este parámetro es opcional y puede ser NULL.

Valor devuelto

None

Observaciones

El controlador puede usar la función WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES para seleccionar una configuración si las interfaces del dispositivo se especifican mediante identificadores para objetos de interfaz USB.

El controlador puede usar esta función si el dispositivo tiene una o varias interfaces USB.

La función WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES cero la estructura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS y establece el miembro Size en el tamaño de la estructura.

Si numInterfaces o SettingPairs es NULL, WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES establece el miembro Type en WdfUsbTargetDeviceSelectConfigTypeMultiInterface. En este caso, el marco determina el número de interfaces que tiene y habilita la configuración alternativa cero en cada una. Use esta configuración si desea establecer de forma predeterminada cero en todas las interfaces.

Si el parámetro numInterfaces y el parámetro SettingPairs no son NULL, esta función establece el miembro Type de la estructura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS en WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs. En este caso, puede especificar una configuración alternativa en cualquiera de las interfaces.

Para inicializar una estructura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS , el controlador debe llamar a una de las siguientes funciones:

Ejemplos

En el ejemplo de código siguiente se llama a WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE o WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES, en función del número de interfaces que admite la configuración del dispositivo. A continuación, el ejemplo llama a WdfUsbTargetDeviceSelectConfig para seleccionar una configuración.

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;
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfusb.h (incluya Wdfusb.h)

Consulte también

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