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 pelo 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.
Valor de retorno
Nenhum
Observações
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 zera a estrutura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS e define o membro tamanho para o tamanho da estrutura.
Se numInterfaces ou SettingPairs estiver NULL, WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES definirá o membro tipo 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 delas. Use essa configuração se quiser usar o padrão para alternar a configuração zero em todas as interfaces.
Se o parâmetro numInterfaces e o parâmetro SettingPairs não forem NULL, essa função definirá o Type membro da estrutura WDF_USB_DEVICE_SELECT_CONFIG_PARAMS para WdfUsbTargetDeviceSelectConfigTypeInterfacesPairs. Nesse caso, você pode especificar uma configuração alternativa em qualquer uma das interfaces.
Para inicializar uma estrutura de WDF_USB_DEVICE_SELECT_CONFIG_PARAMS, o driver deve chamar uma das seguintes funções:
- WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_MULTIPLE_INTERFACES
-
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_INTERFACES_DESCRIPTORS
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(¶ms);
}
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(
¶ms,
numInterfaces,
settingPairs
);
}
status = WdfUsbTargetDeviceSelectConfig(
UsbDevice,
NULL,
¶ms
);
if (!NT_SUCCESS(status)) {
return status;
}
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.0 |
versão mínima do UMDF | 2.0 |
cabeçalho | wdfusb.h (inclua Wdfusb.h) |
Consulte 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