Partilhar via


Visão geral do desenvolvimento de drivers do Windows para controladores host USB

Este artigo descreve o suporte no sistema operacional Windows, para desenvolver um driver de controlador de host USB (Universal Serial Bus) que se comunica com a extensão de controlador de host USB (UCX) fornecida pela Microsoft.

Se você estiver desenvolvendo um controlador de host xHCI que não seja compatível com a especificação ou desenvolvendo um hardware personalizado não-xHCI (como um controlador de host virtual), poderá escrever um driver de controlador de host que se comunique com UCX. Por exemplo, considere uma estação de ancoragem sem fios que suporte dispositivos USB. O PC comunica com dispositivos USB através da dock sem fios, utilizando USB sobre TCP como meio de transporte.

Extensão do controlador host USB (UCX)

A extensão do controlador host USB é um driver fornecido pelo sistema (Ucx01000.sys). Este driver é implementado como uma extensão de classe de estrutura usando as interfaces de programação do Windows Driver Framework . O driver do controlador host serve como o driver do cliente para essa extensão de classe. Enquanto um driver de controlador de host lida com operações e eventos de hardware, gerenciamento de energia e eventos PnP, o UCX serve como uma interface abstrata que enfileira solicitações para o driver do controlador host e executa outras tarefas.

UCX é um dos drivers USB do lado do host no Windows. Ele é carregado como o FDO na pilha de dispositivos do controlador host.

Driver do controlador de host USB

UCX é extensível e é projetado para suportar vários drivers de controlador host. O Windows fornece um driver xHCI (Usbxhci.sys) que tem como alvo controladores host USB xHCI.

O driver do controlador host é um cliente de UCX, escrito como driver KMDF (Kernel-Mode Driver Framework).

Binários fornecidos pela Microsoft

Para escrever um driver de controlador host, você precisa UCX (Ucx01000.sys) e a biblioteca de stub (Ucx01000.lib). A biblioteca de stub está no Kit de Driver do Windows (WDK). A biblioteca desempenha duas funções principais.

  • Traduza chamadas feitas pelo driver do controlador host e passe-as para UCX.
  • Fornece suporte para controle de versão. Um driver de controlador host funcionará com UCX, somente se UCX tiver o mesmo número de versão Principal que o driver de controlador host e o mesmo número de versão secundária ou superior que o driver de controlador host.

Ferramentas de desenvolvimento

O WDK contém recursos necessários para o desenvolvimento de drivers, como cabeçalhos, bibliotecas, ferramentas e exemplos.

Baixar kits e ferramentas para Windows

Introdução

Leia a especificação oficial que descreve o comportamento esperado de diferentes componentes (dispositivo, controlador host e hub) da arquitetura.

xHCI for Universal Serial Bus: Especificação

Documentos oficiais do Universal Serial Bus

Compreender a arquitetura do UCX

Conheça a pilha de controladores USB fornecida pela Microsoft:

Drivers USB do lado do host no Windows

Arquitetura: Extensão do controlador host USB (UCX)

Familiarize-se com objetos e manipuladores UCX

O UCX estende a funcionalidade de objeto WDF para definir seus próprios objetos UCX específicos para USB. Para obter mais detalhes sobre objetos WDF, consulte Introdução aos objetos do Framework.

Para enfileirar solicitações para qualquer driver de controlador de host subjacente, o UCX usa esses objetos. Para obter mais informações, consulte Objetos e identificadores UCX usados por um controlador de dispositivo de anfitrião.

Objeto UCX Description
Objeto do controlador host (UCXCONTROLLER) Representa o controlador anfitrião que é criado pelo driver do controlador anfitrião. O driver deve criar apenas um objeto de controlador de host por instância de controlador de host. Normalmente criado na "callback" EVT_WDF_DRIVER_DEVICE_ADD chamando o método UcxControllerCreate.
Objeto de hub raiz (UCXROOTHUB) Obtém e controla o status das portas raiz do controlador host. Criado pelo driver do controlador de host, normalmente dentro do callback EVT_WDF_DRIVER_DEVICE_ADD, ao chamar o método UcxRootHubCreate.
Objeto de dispositivo USB (UCXUSBDEVICE) Representa um dispositivo USB físico conectado ao barramento. Criado pelo driver do controlador host, geralmente dentro do callback EVT_UCX_CONTROLLER_USBDEVICE_ADD, ao chamar o método **UcxUsbDeviceCreate.
Objeto de ponto de extremidade (UCXENDPOINT) Representa um ponto de extremidade em um objeto de dispositivo USB. Criado pelo driver do controlador de host normalmente dentro do callback EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD ou EVT_UCX_USBDEVICE_ENDPOINT_ADD chamando o método **UcxEndpointCreate.
Objeto Stream (UCXSTREAMS) Representa vários tubos para o dispositivo em um único ponto de extremidade em massa. Criado pelo driver do controlador de host normalmente dentro do callback EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD ao chamar o método UcxStaticStreamsCreate.

Secções de documentação

Funções de retorno de chamada do hub raiz de um driver de controlador host

O UCX lida com a maioria das operações relacionadas ao hub raiz. Isso permite que o driver do hub USB interaja com o hub raiz da mesma forma que interage com um hub regular. O driver do controlador host pode registrar suas funções de retorno de chamada.

Lidar com solicitações de E/S em um driver de controlador host USB

UCX triage os blocos de solicitação USB (URBs) de entrada e os encaminha para a fila de endpoint correta.

Configurar interfaces USB em um controlador de anfitrião

O driver do controlador host desempenha um papel no gerenciamento da UCX das filas associadas aos seus endpoints e na programação de endpoints no hardware do controlador.

Referência da extensão do controlador host USB (UCX)

Fornece especificações para solicitações de E/S, rotinas de suporte, estruturas e interfaces usadas pelo driver do cliente. Essas rotinas e estruturas de dados relacionadas são definidas nos cabeçalhos WDK.

UCX é conhecido como a extensão de classe do framework.

O driver do controlador host é conhecido como o driver do cliente.