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.
O UCX estende a funcionalidade do objeto WDF para definir seus próprios objetos UCX específicos de USB. O UCX usa esses objetos para enfileirar solicitações para qualquer driver de controlador de anfitrião subjacente.
Resumo
- Os objetos UCX são usados pelo driver do controlador de host para lidar com operações relacionadas ao controlador, seu hub raiz e todos os pontos de extremidade.
- Os objetos UCX são criados pelo driver do controlador de host e o tempo de vida de cada objeto é gerenciado pelo UCX.
APIs importantes
- UcxControllerCreate
- UcxRootHubCreate
- UcxUsbDeviceCreate
O UCX estende a funcionalidade do objeto WDF para definir seus próprios objetos UCX específicos de USB. UCX usa esses objetos para enfileirar solicitações para qualquer driver de controlador de host subjacente.
Para obter mais detalhes sobre objetos WDF, consulte Introdução aos objetos framework.
UCXCONTROLLER: objeto do controlador de host
Representa o controlador de host criado pelo driver do controlador de host. O driver deve criar apenas um objeto de controlador de host por instância do controlador de host. Normalmente, é criado durante o retorno de chamada EvtDriverDeviceAdd chamando o método UcxControllerCreate.
Quando o driver do controlador de host cria o objeto, o driver registra sua implementação de funções de retorno de chamada que são invocadas pelo UCX. Além disso, o driver deve identificar o tipo de barramento ao qual o controlador de host está conectado, como ACPI ou PCI. O driver também fornece informações do controlador de host usando a estrutura UCX_CONTROLLER_CONFIG que é passada para a chamada UcxControllerCreate.
Para lidar com solicitações de E/S, o driver do controlador de host deve registrar uma interface de dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER. O driver não é necessário para implementar os IOCTLs definidos nessa interface. Em vez disso, o cliente UCX passa as solicitações IOCTL recebidas nessa interface para UCX chamando UcxIoDeviceControl.
Aqui estão as funções de callback associadas ao objeto do controlador de host, que são invocadas pelo UCX. Essas funções devem ser implementadas pelo driver do controlador de host.
*
EVT_UCX_CONTROLLER_USBDEVICE_ADD
Chamado quando o driver do hub tiver determinado, por meio da interação com o hub raiz e/ou hubs externos, que um novo dispositivo está presente no barramento.
*
EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY
é chamado pelo UCX para coletar informações sobre diversos recursos suportados por controladores de host USB.
*
EVT_UCX_CONTROLLER_RESET
Chamado pelo UCX para redefinir o hardware do controlador, possivelmente em resposta a um erro detectado.
*
EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER
Usado para recuperar o número de quadro atual do controlador de host, que é utilizado pelo driver do hub para o agendamento de transferências isócronas.
UCXROOTHUB: objeto de hub raiz
Obtém e controla o status das portas raiz do controlador de host. Criado pelo driver do controlador de host normalmente dentro do retorno de chamada EvtDriverDeviceAdd chamando o método UcxRootHubCreate após a criação do objeto do controlador de host. Deve haver apenas um objeto de hub raiz por instância do controlador de host. Na chamada UcxRootHubCreate, o driver registra suas implementações de callbacks.
EVT_UCX_ROOTHUB_GET_INFO Retorna o número de portas USB 2.0 e USB 3.0 do hub raiz.
EVT_UCX_ROOTHUB_GET_20PORT_INFO
Retorne informações sobre as portas USB 2.0 ou USB 3.0 (*EVT_UCX_ROOTHUB_GET_30PORT_INFO) do hub raiz.
Depois que o objeto do hub raiz é criado e inicializado, o driver do hub interage com as portas do hub raiz enviando transferências de interrupção e controle. O UCX auxilia nessas transferências invocando essas funções callback implementadas pelo driver do controlador de host.
EVT_UCX_ROOTHUB_CONTROL_URB
Manipula solicitações de controle de funcionalidades pelo hub USB.
EVT_UCX_ROOTHUB_INTERRUPT_TX
manipula a solicitação de informações sobre portas alteradas.
Para obter mais informações, consulte as funções de retorno de chamada do hub raiz de um driver do controlador de host.
UCXUSBDEVICE: objeto de dispositivo USB
Representa um dispositivo USB físico conectado ao barramento. Criado pelo driver do controlador de host, normalmente no retorno de chamada EVT_UCX_CONTROLLER_USBDEVICE_ADD, por meio da chamada ao método UcxUsbDeviceCreate.
Quando o objeto é criado, o driver do controlador de host registra sua implementação das funções de retorno de chamada com a chamada UcxUsbDeviceCreate .
Essas funções de chamada de retorno têm o objetivo de manter o controlador e o driver informados sobre o status atual dos dispositivos USB.
EVT_UCX_USBDEVICE_ENABLE
Prepara o controlador para executar transferências para o ponto de extremidade padrão do dispositivo.
EVT_UCX_USBDEVICE_DISABLE libera recursos do controlador associados ao dispositivo e seu endpoint padrão.
EVT_UCX_USBDEVICE_ADDRESS Programar um endereço no controlador e enviar uma transferência SET_ADDRESS ao dispositivo, para trazê-lo ao estado endereçado.
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
Programa endpoints não padrão no controlador e/ou libera outros endpoints não padrão.
EVT_UCX_USBDEVICE_RESET
Uma notificação do controlador de que um dispositivo foi redefinido. Neste caso, o driver toma todas as ações necessárias para sincronizar o controlador com o dispositivo USB.
EVT_UCX_USBDEVICE_UPDATE Notifica o controlador de várias informações relacionadas ao dispositivo.
EVT_UCX_USBDEVICE_HUB_INFO Uma notificação sobre as propriedades do hub, se o identificador UCXUSBDEVICE for para um dispositivo hub.
EVT_UCX_USBDEVICE_ENDPOINT_ADD Notifica o driver a fim de criar um endpoint para o dispositivo. EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD para o ponto de extremidade padrão.
Quando uma interface em um dispositivo USB 3.0 suspenso sinaliza o despertar, espera-se que o driver chame UcxUsbDeviceRemoteWakeNotification para notificar o UCX.
Depois que o objeto é criado, o tempo de vida do objeto é gerenciado pelo UCX e o driver não deve excluir o objeto.
UCXENDPOINT: Objeto endpoint
Representa um ponto de extremidade em um objeto de dispositivo USB. Objetos de ponto de extremidade são criados pelo controlador de host durante um retorno de chamada EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD ou EVT_UCX_USBDEVICE_ENDPOINT_ADD. Quando um objeto de ponto de extremidade é criado, o driver registra suas próprias funções de retorno de chamada.
O driver também cria um objeto de fila de estrutura para cada ponto de extremidade e passa o WDFQUEUE para essa fila para UCX chamando UcxEndpointSetWdfIoQueue. Depois que o endpoint é criado, o tempo de vida do objeto e suas filas associadas é gerenciado pelo UCX, e o driver não deve excluir esses objetos por conta própria.
O objeto endpoint implementa várias funções de retorno de chamada que permitem que o driver ajude o UCX com operações relacionadas ao endpoint.
EVT_UCX_ENDPOINT_ABORT
Aborte a fila associada ao endpoint.
EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS
Notifique o driver do controlador de que ele pode concluir transferências canceladas no endpoint.
EVT_UCX_ENDPOINT_PURGE
Concluir todas as solicitações de E/S pendentes no ponto de extremidade.
EVT_UCX_ENDPOINT_START
Inicie a fila associada ao endpoint.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD
Criar fluxos estáticos.
EVT_UCX_ENDPOINT_RESET
Notifique o driver para redefinir a programação do controlador do endpoint.
Quando o driver do controlador de host recebe um erro "No Ping Response" do USB 3.0 em um endpoint, o driver deve chamar UcxEndpointNoPingResponseError. Essa chamada resulta no objeto de dispositivo USB recebendo EVT_UCX_USBDEVICE_UPDATE. Para obter mais informações, consulte Configurando pontos de extremidade USB no driver do controlador de host.
UCXSTREAMS: objeto Stream
Representa um número de canais para o dispositivo em um único endpoint. O driver do controlador de host cria objetos de fluxo no retorno de chamada EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD chamando UcxStaticStreamsCreate.
Durante a chamada UcxStaticStreamsCreate, o driver do controlador de host registra suas funções de retorno de chamada. Para um objeto de ponto de extremidade específico, o driver pode determinar se criou um objeto de fluxos e retornar o identificador UCXSTREAMS chamando UcxEndpointGetStaticStreamsReferenced.
Depois que o objeto é criado, o driver cria um objeto de fila de estrutura para cada fluxo e envia o identificador WDFQUEUE para UCX chamando UcxStaticStreamsSetStreamInfo.
O objeto de fluxo fornece várias funções de callback para o controlador de host, ajudando o UCX a gerenciar os fluxos estáticos.
EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE
Liberar recursos do controlador para todos os fluxos de um ponto de extremidade.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE Habilitar o hardware controlador para todos os fluxos deste endpoint.
O tempo de vida do objeto e das filas associadas são gerenciados pelo UCX e o driver não deve excluir os objetos.