Partilhar via


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

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

Aqui está uma versão modificada de um diagrama apresentado 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 host.

Arquitetura UCX.

Na imagem anterior,

  • O driver de hub USB (Usbhub3.sys) é um driver KMDF. O driver de hub é responsável por gerenciar hubs USB e suas portas, enumerar e criar objetos de dispositivo físico (PDOs) de dispositivos USB e outros hubs que podem ser conectados às suas portas downstream.
  • A extensão do controlador 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 de controlador host subjacente.
  • O driver do controlador host USB gerencia o hardware. Usbxhci.sys é um destes drivers fornecidos pela Microsoft, que tem como alvo controladores USB compatíveis com as especificações xHCI. 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 é totalmente compatível com a especificação e, portanto, não pode usar Usbxhci.sys ou para hardware não-XHCI, como conexão USB sobre TCP.

A comunicação bidirecional que ocorre entre o UCX e o driver do controlador de host é realizada através das interfaces de programação da extensão do controlador de host USB (UCX). Cada driver se vincula estaticamente aos pontos de entrada na biblioteca de stub fornecida pela Microsoft (Ucx01000.lib) quando o driver é compilado.

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

Pilha de dispositivos UCX.