Compartilhar via


Função WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES (wdfusb.h)

[Aplica-se a KMDF e UMDF]

A função WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES inicializa uma estrutura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS para que um driver possa configurar um dispositivo para usar várias interfaces.

Sintaxe

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

Um ponteiro para uma estrutura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS alocada por driver.

[in, optional] NumberInterfaces

O número de elementos na matriz SettingPairs . Se SettingPairs não for NULL, esse parâmetro deverá ser maior que zero.

[in, optional] SettingPairs

Uma matriz de estruturas WDF_USB_INTERFACE_SETTING_PAIR . Esse parâmetro é opcional e pode ser NULL.

Retornar valor

Nenhum

Comentários

O driver pode usar a função WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES para selecionar uma configuração se as interfaces do dispositivo forem especificadas por identificadores para objetos de interface USB.

O driver poderá usar essa função se o dispositivo tiver uma ou mais interfaces USB.

A função WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES zeros a estrutura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS e define o membro Size como o tamanho da estrutura.

Se numInterfaces ou SettingPairs for NULL, WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES definirá o membro Type como WdfUsbTargetDeviceSelectConfigTypeMultiInterface. Nesse caso, a estrutura determina o número de interfaces que você tem e habilita a configuração alternativa zero em cada uma. Use essa configuração se quiser usar como padrão a configuração alternativa zero em todas as interfaces.

Se o parâmetro numInterfaces e o parâmetro SettingPairs não forem NULL, essa função definirá o membro Type da estrutura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS como WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs. Nesse caso, você pode especificar uma configuração alternativa em qualquer uma das interfaces.

Para inicializar uma estrutura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS , o driver deve chamar uma das seguintes funções:

Exemplos

O exemplo de código a seguir chama WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE ou WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES, com base no número de interfaces compatíveis com a configuração do dispositivo. Em seguida, o exemplo chama WdfUsbTargetDeviceSelectConfig para selecionar uma configuração.

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 Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfusb.h (include Wdfusb.h)

Confira também

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