Compartilhar via


Arquitetura: extensão do controlador de host USB (UCX)

Esta seção apresenta conceitos e tarefas de alto nível para o desenvolvimento do driver de host. A seção se aplica a você se você estiver escrevendo um novo driver do controlador de host que se comunica com o driver de extensão do controlador de host USB fornecido pela Microsoft (Ucx01000.sys).

Aqui está uma versão modificada de um diagrama mostrado em drivers USB do lado do host no Windows. Esta versão oculta os detalhes da camada de driver do cliente USB, que não são relevantes para o desenvolvimento do driver do controlador de host.

Arquitetura UCX.

Na imagem anterior,

  • O driver do hub USB (Usbhub3.sys) é um driver KMDF. O driver do hub é responsável por gerenciar os hubs USB e suas portas, enumerar e criar objetos de dispositivo físico (PDOs) para dispositivos USB e outros hubs que podem ser anexados às suas portas downstream.
  • A extensão do controlador de host USB (Ucx01000.sys) é uma camada de abstração para o driver de hub acima na pilha e fornece um mecanismo genérico para enfileirar solicitações para o driver do controlador de host subjacente.
  • O driver do controlador de host USB gerencia o hardware. Usbxhci.sys é um desses drivers fornecidos pela Microsoft, que tem como alvo o hardware do controlador USB compatível com especificações xHCI, em particular. Pode ser necessário que desenvolvedores de hardware independentes escrevam seu próprio driver de controlador de host, em vez de usar a caixa de entrada Usbxhci.sys. Por exemplo, para um hardware XHCI que não está totalmente em conformidade com a especificação e, portanto, não pode usar Usbxhci.sys ou para hardware não XHCI, como USB por conexão TCP.

A comunicação bidirecional que ocorre entre o UCX e o driver do controlador de host ocorre usando interfaces de programação UCX (extensão do controlador de host USB). Cada driver é estaticamente vinculado aos pontos de entrada da biblioteca stub fornecida pela Microsoft (Ucx01000.lib) durante a compilação do driver.

Aqui estão as pilhas de dispositivo carregadas para o driver do controlador host:

pilha de dispositivo UCX.