Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve um URB (Bloco de Solicitação USB) e fornece informações sobre como um driver cliente USB pode usar rotinas do Modelo de Driver do Windows (WDM) para alocar, compilar e enviar URBs para a pilha de driver USB.
Um driver cliente USB (Universal Serial Bus) não pode se comunicar diretamente com o seu próprio dispositivo. Em vez disso, o driver cliente cria solicitações e as envia para a pilha de driver USB para processamento. Em cada solicitação, o driver cliente fornece uma estrutura de dados de comprimento variável chamada URB (Bloco de Solicitação USB). A estrutura URB descreve os detalhes da solicitação e também contém informações sobre o status da solicitação concluída. O driver cliente executa todas as operações específicas do dispositivo, incluindo transferências de dados, por meio de URBs. O driver cliente deve inicializar a URB com informações sobre a solicitação antes de enviá-la para a pilha de drivers USB. Para determinados tipos de solicitações, a Microsoft fornece rotinas auxiliares e macros que alocam uma estrutura URB e preenchem os membros necessários da estrutura URB com detalhes fornecidos pelo driver cliente.
Cada URB começa com um cabeçalho de tamanho fixo padrão (_URB_HEADER) cuja finalidade é identificar o tipo de operação solicitada. O membro Length de _URB_HEADER especifica o tamanho, em bytes, da URB. O membro function , que deve ser uma de uma série de constantes URB_FUNCTION_XXX definidas pelo sistema, determina o tipo de operação que é solicitado. No caso de transferências de dados, por exemplo, esse membro indica o tipo de transferência. Os códigos de função URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER e URB_FUNCTION_ISOCH_TRANSFER indicam transferências de controle, em massa/interrupção e isócronas, respectivamente. A pilha de drivers USB usa o membro Status para retornar um código de status de USB específico.
Para enviar um URB, o driver cliente usa a solicitação IOCTL_INTERNAL_USB_SUBMIT_URB , que é entregue ao dispositivo por meio de um IRP (pacote de solicitação de E/S) do tipo IRP_MJ_INTERNAL_DEVICE_CONTROL.
Depois que a pilha de driver USB terminar de processar a URB, a pilha de driver usará o membro Status da estrutura URB para retornar um código de status específico de USB.
Observação
Os desenvolvedores de driver KMDF e UMDF devem usar as respectivas interfaces de framework para se comunicar com um dispositivo USB. Para obter mais informações, consulte Como trabalhar com dispositivos USB para drivers KMDF e trabalhar com interfaces USB no UMDF. Estes tópicos discutem as interfaces de driver WDM subjacentes usadas para comunicação de dispositivo USB.
Nesta seção
| Tópico | Descrição |
|---|---|
| alocação e criação de URBs | Este tópico descreve como um driver cliente de USB pode usar rotinas de driver WDM para alocar e formatar uma URB antes de enviar a solicitação para a pilha de drivers USB fornecida pela Microsoft. |
| como enviar um URB | Este tópico descreve as etapas necessárias para enviar um URB inicializado para a pilha de driver USB para processar uma solicitação específica. |
| Práticas recomendadas do : usando URBs | Este tópico descreve as práticas recomendadas para um driver cliente para alocar, compilar e enviar um URB para a pilha de driver USB incluída no Windows 8. |