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 do 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 USB_CONFIGURATION_DESCRIPTOR no parâmetro ConfigurationDescriptor .

[in] InterfaceList

Ponteiro para o primeiro elemento de uma matriz alocada pelo 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 membro InterfaceDescriptor do último elemento na matriz deve ser definido como NULL.

Retornar valor

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

Comentários

Para obter informações sobre como criar uma solicitação de configuração de seleção e um exemplo de código, consulte Como selecionar uma configuração para um dispositivo USB.

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 membro Pipes do USBD_INTERFACE_INFORMATION aponta para uma matriz de estruturas USBD_PIPE_INFORMATION . O driver de barramento USB preenche a matriz de estruturas 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 o URB retornado, você deve liberar o URB chamando ExFreePool.

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

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho usbdlib.h (inclua Usbdlib.h)
Biblioteca Usbd.lib
IRQL DISPATCH_LEVEL (consulte comentários)

Confira também

Como selecionar uma configuração para um dispositivo USB

Referência de programação de driver de dispositivo USB

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION