Partilhar via


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

O UCX executa o gerenciamento de hub raiz. Ele simula e gerencia o controle virtual e interrompe os pontos de extremidade. O UCX cria esses pontos de extremidade virtuais quando o driver do controlador de host cria o objeto de hub raiz.

O driver do hub USB interage com o hub raiz da mesma forma que interage com um dispositivo de hub regular. No entanto, o driver do controlador de host não precisa manipular solicitações enviadas ao hub raiz para o controle e interromper pontos de extremidade diretamente. O UCX lida com essas solicitações. O UCX invoca funções de retorno de chamada implementadas pelo driver do controlador de host para que ele possa retornar informações relevantes sobre o estado atual das portas do controlador de host. Quando essas funções de retorno de chamada são concluídas, as solicitações UCX subjacentes são concluídas e retornadas ao driver do hub.

Ao receber uma transferência de interrupção para o hub raiz, o UCX define a solicitação como pendente. Quando uma alteração é detectada em uma das portas do hub raiz, o driver do controlador de host chama UcxRootHubPortChanged. Em seguida, o UCX invoca o retorno de chamada EVT_UCX_ROOTHUB_INTERRUPT_TX do driver e o driver indica que a porta foi alterada. No momento, o UCX conclui a solicitação pendente de volta para o driver do hub. O driver do hub envia uma transferência de controle para o hub raiz para obter a porta status da porta que sinalizou uma alteração. O UCX define essa solicitação de transferência de controle como pendente e invoca a função de retorno de chamada EVT_UCX_ROOTHUB_CONTROL_URB do driver. Na implementação, retorna o status atual da porta do hub raiz, incluindo a indicação de que um dispositivo está conectado. O UCX conclui a solicitação de transferência de controle para o driver do hub e a enumeração do dispositivo continua.