Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O UCX estende a funcionalidade de objeto WDF para definir seus próprios objetos UCX específicos para USB. O UCX usa esses objetos para enfileirar solicitações para qualquer driver de controlador de host subjacente.
Resumo
- Os objetos UCX são usados pelo driver do controlador 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 host e o tempo de vida de cada objeto é gerenciado pelo UCX.
APIs importantes
O UCX estende a funcionalidade de objeto WDF para definir seus próprios objetos UCX específicos para USB. O 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 do Framework.
UCXCONTROLLER: Objeto do controlador 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 de controlador de host. Normalmente criado dentro do retorno de chamada EvtDriverDeviceAdd chamando o método UcxControllerCreate .
Quando o driver do controlador host cria o objeto, o driver regista a sua implementação de funções de 'callback' que são invocadas no UCX. Além disso, o driver deve identificar o tipo de barramento pelo qual o controlador host está conectado, como ACPI ou PCI. O driver também fornece informações do dispositivo do controlador 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 host deve registrar uma interface de dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER. O driver não é necessário para implementar as IOCTLs definidas nesta 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 retorno de chamada associadas ao objeto do controlador anfitrião, que são invocadas pelo UCX. Essas funções devem ser implementadas pelo driver do controlador host.
*
EVT_UCX_CONTROLLER_USBDEVICE_ADD
Chamado quando o driver do hub determina, por meio da interação com o hub raiz e/ou hub(s) externo(s), que um novo dispositivo está presente no barramento.
*
EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY
Chamado pela UCX para reunir informações sobre vários recursos suportados por controladores de host USB.
*
EVT_UCX_CONTROLLER_RESET Chamado pela UCX para redefinir o hardware do controlador, possivelmente em resposta a um erro detetado.
*
EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER
Usado para recuperar o número de quadro atual do controlador host, que é utilizado pelo controlador do hub para agendar transferências isócronas.
UCXROOTHUB: Objeto de hub raiz
Obtém e controla o status das portas raiz do controlador host. Criado pelo driver do controlador host normalmente dentro do retorno de chamada EvtDriverDeviceAdd ao chamar o método UcxRootHubCreate após a criação do objeto do controlador host. Deve haver apenas um objeto de hub raiz por instância do controlador host. Na chamada UcxRootHubCreate, o driver regista as suas implementações de callback.
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: Retorna 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 hub raiz é criado e inicializado, o driver do hub interage com as portas do hub raiz enviando transferências de interrupção e controle. UCX auxilia com essas transferências invocando essas funções de retorno de chamada implementadas pelo driver do controlador host.
EVT_UCX_ROOTHUB_CONTROL_URB Lida com solicitações de controle de funções pelo hub USB.
EVT_UCX_ROOTHUB_INTERRUPT_TX Lida com a solicitação de informações sobre portas alteradas.
Para mais informações, consulte Funções de retorno de chamada do hub raiz de um driver de controlador anfitrião.
UCXUSBDEVICE: objeto de dispositivo USB
Representa um dispositivo USB físico conectado ao barramento. Criado pelo driver do controlador de host, normalmente dentro da função de retorno EVT_UCX_CONTROLLER_USBDEVICE_ADD, chamando o método UcxUsbDeviceCreate.
Quando o objeto é criado, o driver do controlador host regista a sua implementação das funções de retorno com a chamada UcxUsbDeviceCreate.
Estas funções de retorno de chamada destinam-se a manter o controlador e o driver informados sobre o estado atual dos dispositivos USB.
EVT_UCX_USBDEVICE_ENABLE Prepara o controlador para executar transferências para o endpoint padrão do dispositivo.
EVT_UCX_USBDEVICE_DISABLE Liberta os recursos do controlador associados ao dispositivo e ao seu ponto de extremidade padrão.
EVT_UCX_USBDEVICE_ADDRESS Programa um endereço no controlador e envia uma transferência de "SET_ADDRESS" para o dispositivo, para colocá-lo no estado endereçado.
EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
Configura 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 reiniciado, caso em que o driver toma quaisquer ações necessárias para sincronizar o controlador com o dispositivo USB.
EVT_UCX_USBDEVICE_UPDATE Notifica o controlador de diversas informações relacionadas com o dispositivo.
EVT_UCX_USBDEVICE_HUB_INFO Uma notificação sobre as propriedades de um hub, se o identificador UCXUSBDEVICE for para um dispositivo de hub.
EVT_UCX_USBDEVICE_ENDPOINT_ADD
Notifica o driver para criar um endpoint para o dispositivo.
EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD para o endpoint padrão.
Quando uma interface em um dispositivo USB 3.0 suspenso sinalizou despertar, espera-se que o driver chame UcxUsbDeviceRemoteWakeNotification para notificar 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 de ponto de extremidade
Representa um ponto de extremidade em um objeto de dispositivo USB. Os objetos de ponto de extremidade são criados pelo controlador host durante um callback EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD ou EVT_UCX_USBDEVICE_ENDPOINT_ADD. Quando um objeto de ponto de extremidade é criado, o driver registra as suas funções de retorno de chamada.
O driver também cria um objeto de fila de framework para cada ponto de extremidade e passa o WDFQUEUE dessa fila para UCX chamando UcxEndpointSetWdfIoQueue. Uma vez criado o ponto de extremidade, a duração do objeto e das suas filas associadas é gerida pelo UCX, e o driver não deve excluir propriamente esses objetos.
O objeto de endpoint implementa várias funções de retorno de chamada que permitem que o driver ajude UCX com operações relacionadas ao endpoint.
EVT_UCX_ENDPOINT_ABORT
Anular a fila associada ao ponto de extremidade.
EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS
Notifique o driver do controlador de que pode concluir as transferências canceladas no endpoint.
EVT_UCX_ENDPOINT_PURGE
Conclua todas as solicitações pendentes de I/O no endpoint.
EVT_UCX_ENDPOINT_START
Inicie a fila associada ao endereço.
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 anfitrião recebe um erro USB 3.0 No Ping Response Error num 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 Configurar pontos de extremidade USB num driver de controlador anfitrião.
UCXSTREAMS: Objeto Stream
Representa um número de canais para o dispositivo num único ponto final. O driver do controlador host cria objetos de fluxo no evento de retorno de chamada EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD chamando UcxStaticStreamsCreate.
Durante a chamada UcxStaticStreamsCreate, o driver do controlador host regista as suas funções de retorno de chamada. Para um objeto de endpoint específico, o driver pode determinar se ele criou um objeto streams 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 stream fornece várias funções de retorno de chamada para o controlador host para ajudar o UCX a gerenciar os fluxos estáticos.
EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE
Libere recursos do controlador para todos os fluxos de um ponto de extremidade.
EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE
Ative o hardware do controlador de todos os streams para este endpoint.
O tempo de vida do objeto e as filas associadas são gerenciados pelo UCX e o driver não deve excluir os objetos.