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