Freigeben über


WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES-Funktion (wdfusb.h)

[Gilt für KMDF und UMDF]

Die WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES-Funktion initialisiert eine WDF_USB_DEVICE_SELECT_CONFIG_PARAMS-Struktur , sodass ein Treiber ein Gerät für die Verwendung mehrerer Schnittstellen konfigurieren kann.

Syntax

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

Parameter

[in, out] Params

Ein Zeiger auf eine vom Treiber zugewiesene WDF_USB_DEVICE_SELECT_CONFIG_PARAMS-Struktur .

[in, optional] NumberInterfaces

Die Anzahl der Elemente im SettingPairs-Array . Wenn SettingPairs nicht NULL ist, muss dieser Parameter größer als 0 sein.

[in, optional] SettingPairs

Ein Array von WDF_USB_INTERFACE_SETTING_PAIR Strukturen. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

Keine

Bemerkungen

Ihr Treiber kann die WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES-Funktion verwenden, um eine Konfiguration auszuwählen, wenn die Geräteschnittstellen durch Handles für USB-Schnittstellenobjekte angegeben werden.

Ihr Treiber kann diese Funktion verwenden, wenn Ihr Gerät über eine oder mehrere USB-Schnittstellen verfügt.

Die WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES-Funktion nullt die WDF_USB_DEVICE_SELECT_CONFIG_PARAMS-Struktur und legt das Element Size auf die Größe der Struktur fest.

Wenn numInterfaces oder SettingPairsNULL ist, legt WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES das Type-Element auf WdfUsbTargetDeviceSelectConfigTypeMultiInterface fest. In diesem Fall bestimmt das Framework die Anzahl der Schnittstellen, über die Sie verfügen, und aktiviert die alternative Einstellung 0 für jede. Verwenden Sie diese Einstellung, wenn Sie standardmäßig die alternative Einstellung null für alle Schnittstellen verwenden möchten.

Wenn der numInterfaces-Parameter und der Parameter SettingPairs nicht NULL sind, legt diese Funktion den Type-Member der WDF_USB_DEVICE_SELECT_CONFIG_PARAMS-Struktur auf WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs fest. In diesem Fall können Sie eine alternative Einstellung für jede der Schnittstellen angeben.

Um eine WDF_USB_DEVICE_SELECT_CONFIG_PARAMS-Struktur zu initialisieren, muss der Treiber eine der folgenden Funktionen aufrufen:

Beispiele

Im folgenden Codebeispiel wird entweder WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE oder WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES aufgerufen, basierend auf der Anzahl von Schnittstellen, die von der Gerätekonfiguration unterstützt werden. Anschließend ruft das Beispiel WdfUsbTargetDeviceSelectConfig auf, um eine Konfiguration auszuwählen.

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

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfusb.h (einschließlich Wdfusb.h)

Weitere Informationen

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