Partilhar via


função USBD_CreateConfigurationRequestEx (usbdlib.h)

A rotina USBD_CreateConfigurationRequestEx aloca e formata um URB para selecionar uma configuração para um dispositivo USB.

USBD_CreateConfigurationRequestEx substitui USBD_CreateConfigurationRequest.

Sintaxe

PURB USBD_CreateConfigurationRequestEx(
  [in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
  [in] PUSBD_INTERFACE_LIST_ENTRY    InterfaceList
);

Parâmetros

[in] ConfigurationDescriptor

Ponteiro para uma estrutura de USB_CONFIGURATION_DESCRIPTOR alocada pelo chamador que contém o descritor de configuração para a configuração a ser selecionada. Normalmente, o driver cliente envia um URB do tipo URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (consulte _URB_CONTROL_DESCRIPTOR_REQUEST) para recuperar informações sobre configurações, interfaces, pontos de extremidade, o fornecedor e descritores específicos de classe de um dispositivo USB. Quando o driver cliente especifica USB_CONFIGURATION_DESCRIPTOR_TYPE como o tipo de descritor, a solicitação recupera todas as informações do dispositivo em uma estrutura USB_CONFIGURATION_DESCRIPTOR. Em seguida, o driver passa o ponteiro recebido para a estrutura de USB_CONFIGURATION_DESCRIPTOR no parâmetro ConfigurationDescriptor.

[in] InterfaceList

Ponteiro para o primeiro elemento de uma matriz alocada por chamador de estruturas de USBD_INTERFACE_LIST_ENTRY. O comprimento da matriz depende do número de interfaces no descritor de configuração. O número de elementos na matriz deve ser um a mais do que o número de interfaces na configuração. Inicialize a matriz chamando RtlZeroMemory. O InterfaceDescriptor membro do último elemento na matriz deve ser definido como NULL.

Valor de retorno

USBD_CreateConfigurationRequestEx aloca uma estrutura URB, formata-a para a solicitação de URB_FUNCTION_SELECT_CONFIGURATION (solicitação de configuração de seleção) e retorna um ponteiro para o URB. Em seguida, o driver cliente pode usar o URB retornado para enviar a solicitação de configuração de seleção para o driver do controlador de host para definir a configuração. Você deve liberar o URB quando terminar de usá-lo.

Observações

Para obter informações sobre como criar uma solicitação de configuração selecionada e um exemplo de código, consulte How to Select a Configuration for a USB Device.

O valor retornado é um ponteiro para a estrutura URB que você pode usar para enviar uma solicitação de configuração de seleção para o driver do controlador de host para definir a configuração especificada.

Depois que a pilha de driver USB concluir a solicitação select-configuration, você poderá inspecionar as estruturas de USBD_INTERFACE_INFORMATION. O Pipes membro do USBD_INTERFACE_INFORMATION aponta para uma matriz de estruturas USBD_PIPE_INFORMATION. O driver do barramento USB preenche a matriz de estruturas de USBD_PIPE_INFORMATION com informações sobre os pipes associados aos pontos de extremidade da interface. O driver cliente pode obter identificadores de pipe do Pipes[i].PipeHandle e usá-los para enviar solicitações de E/S para pipes específicos.

Depois de concluir todas as operações com a URBretornada, você deverá liberar a URB chamando ExFreePool.

Você pode alocar o descritor de configuração e a matriz do pool nãopagado ou de páginas. Os chamadores dessa rotina podem ser executados no <DO IRQL = DISPATCH_LEVEL se a memória apontada por ConfigurationDescriptor e interfaceList for alocada do pool nãopagado. Caso contrário, os chamadores devem ser executados no < DISPATCH_LEVEL IRQL.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho usbdlib.h (inclua Usbdlib.h)
biblioteca Usbd.lib
IRQL DISPATCH_LEVEL (Consulte comentários)

Consulte também

Como selecionar uma configuração para um dispositivo USB

referência de programação do driver de dispositivo USB

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION