Condividi tramite


funzione WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES (wdfusb.h)

[Si applica a KMDF e UMDF]

La funzione WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES inizializza una struttura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS in modo che un driver possa configurare un dispositivo per l'uso di più interfacce.

Sintassi

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

Parametri

[in, out] Params

Puntatore a una struttura di WDF_USB_DEVICE_SELECT_CONFIG_PARAMS allocata dal driver.

[in, optional] NumberInterfaces

Numero di elementi nella matrice SettingPairs . Se SettingPairs non è NULL, questo parametro deve essere maggiore di zero.

[in, optional] SettingPairs

Matrice di strutture WDF_USB_INTERFACE_SETTING_PAIR . Questo parametro è facoltativo e può essere NULL.

Valore restituito

nessuno

Osservazioni

Il driver può usare la funzione WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES per selezionare una configurazione se le interfacce del dispositivo vengono specificate dagli handle agli oggetti interfaccia USB.

Il driver può usare questa funzione se il dispositivo ha una o più interfacce USB.

La funzione WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES zero la struttura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS e imposta il membro Size sulla dimensione della struttura.

Se numInterfaces o SettingPairs è NULL, WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES imposta il membro Type su WdfUsbTargetDeviceSelectConfigTypeMultiInterface. In questo caso, il framework determina il numero di interfacce disponibili e abilita l'impostazione alternativa zero su ogni. Usare questa impostazione se si vuole impostare per impostazione predefinita zero su tutte le interfacce.

Se il parametro numInterfaces e il parametro SettingPairs non sono null, questa funzione imposta il membro Type della struttura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS su WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs. In questo caso, è possibile specificare un'impostazione alternativa in una qualsiasi delle interfacce.

Per inizializzare una struttura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS , il driver deve chiamare una delle funzioni seguenti:

Esempio

Nell'esempio di codice seguente viene chiamato WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE o WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES, in base al numero di interfacce supportate dalla configurazione del dispositivo. L'esempio chiama quindi WdfUsbTargetDeviceSelectConfig per selezionare una configurazione.

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfusb.h (include Wdfusb.h)

Vedi anche

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