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