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 sono specificate dagli handle per gli oggetti interfaccia USB.

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

La funzione WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES consente di zero la struttura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS e imposta il membro Size sulle dimensioni 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 per ogni interfaccia. Usare questa impostazione se si vuole impostare l'impostazione predefinita su zero in tutte le interfacce.

Se il parametro numInterfaces e il parametro SettingPairs non sono entrambi 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:

Esempi

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

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione wdfusb.h (include Wdfusb.h)

Vedere 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