共用方式為


WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES函式 (wdfusb.h)

[適用於 KMDF 和 UMDF]

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES函式會初始化WDF_USB_DEVICE_SELECT_CONFIG_PARAMS結構,讓驅動程式可以將裝置設定為使用多個介面。

語法

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

參數

[in, out] Params

驅動程式配置 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS 結構的指標。

[in, optional] NumberInterfaces

SettingPairs 陣列中的項目數目。 如果 SettingPairs 不是 NULL,此參數必須大於零。

[in, optional] SettingPairs

WDF_USB_INTERFACE_SETTING_PAIR 結構的陣列。 這個參數是選擇性的,而且可以是 NULL

傳回值

備註

如果裝置介面是由 USB 介面物件的句柄所指定,您的驅動程式可以使用 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES 函式來選取設定。

如果您的裝置有一或多個 USB 介面,您的驅動程式可以使用此函式。

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES函式會零WDF_USB_DEVICE_SELECT_CONFIG_PARAMS結構,並將 Size 成員設定為 結構的大小。

如果 numInterfacesSettingPairsNULL,WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACESType 成員設定為 WdfUsbTargetDeviceSelectConfigTypeMultiInterface 在此情況下,架構會決定您擁有的介面數目,並在每個介面上啟用替代設定零。 如果您想要在所有介面上預設為替代設定零,請使用此設定。

如果 numInterfaces 參數和 SettingPairs 參數都不是 NULL,此函式會將 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS 結構的 Type 成員設定為 WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs。 在此情況下,您可以在任何介面上指定替代設定。

若要初始化 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS 結構,驅動程式必須呼叫下列其中一個函式:

範例

下列程式代碼範例會根據裝置組態支援的介面數目, 呼叫 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACEWDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES。 然後,此範例會呼叫 WdfUsbTargetDeviceSelectConfig 來選取組態。

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

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfusb.h (包含 Wdfusb.h)

另請參閱

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