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 USB Type-C Policy Manager fornecido pela Microsoft monitoriza as atividades dos conectores Type-C USB. Windows, versão 1809, apresenta um conjunto de interfaces de programação que você pode usar para escrever um driver de cliente para o Policy Manager (chamado de driver de cliente PM neste tópico). O driver do cliente pode participar das decisões de política para conectores Type-C USB. Com esse conjunto, você pode optar por escrever um driver de exportação de modo kernel ou um driver de modo de usuário.
O Policy Manager obtém e coordena as informações do USB Connector Manager (UCM), do controlador de host USB e da função USB e do driver do cliente PM. Quando a notificação da interface do usuário é necessária, o Policy Manager envia a solicitação para o Shell do sistema.
Para obter uma visão completa dos drivers, consulte Arquitetura: design USB Type-C para um sistema Windows.
APIs importantes
Os APIs PM são declarados no cabeçalho Usbpmapi.h.
1: Registo de Cliente
- O driver cliente chama UsbPm_Register para registrar as funções de retorno de chamada do driver.
- O driver do cliente aguarda um evento do Policy Manager.
Uma chamada UsbPm_Register bem-sucedida não garante que o driver do cliente tenha solicitado acesso. Quando o Policy Manager estiver pronto, o EVT_USBPM_EVENT_CALLBACK do driver será invocado com PolicyManagerArrival como os dados de evento que indicam o acesso real concedido.
- A chamada UsbPm_Register retorna o identificador de registro.
O controlador cliente pode receber EVT_USBPM_EVENT_CALLBACK mesmo antes de UsbPm_Register retornar.
2: Chegada ao Hub
- Quando um dispositivo UCMCX chega, o POlicy Manager é notificado e controla todas as alças de hub, juntamente com as propriedades e estados de todos os conectores em cada hub.
- O EVT_USBPM_EVENT_CALLBACK do driver do cliente é invocado com HubArrivalRemoval como os dados do evento. A chamada também contém os identificadores de hub.
- Na implementação do driver cliente de EVT_USBPM_EVENT_CALLBACK, o driver chama UsbPm_RetrieveHubProperties para obter o número de conectores no hub e, em seguida, chama UsbPm_RetrieveConnectorProperties e UsbPm_RetrieveConnectorState para obter mais informações sobre cada conector.
3: Alteração do estado do conector
- Devido a uma alteração no estado do conector, como a anexação/desanexação de Type-C ou a negociação do contrato PD, o Gerenciador de Políticas atualiza as informações de estado para cada conector.
- O EVT_USBPM_EVENT_CALLBACK do driver do cliente é invocado com ConnectorStateChange como os dados do evento. A chamada também contém os manípulos do conector.
- A rotina de conclusão do driver de cliente também é chamada e age de acordo.
- Na implementação do driver cliente de EVT_USBPM_EVENT_CALLBACK, o driver chama UsbPm_RetrieveConnectorProperties. Usando a alça de conector fornecida, o driver obtém o estado mais recente do conector, inspeciona-o e pode decidir atualizar sua cópia local.
4: Alteração iniciada pelo driver do cliente
Para solicitar uma alteração, o driver do cliente chama UsbPm_AssignConnectorPowerLevel.
O driver do cliente pode chamar esta função dentro do callback EVT_USBPM_EVENT_CALLBACK registado usando UsbPm_Register.
O Policy Manager encaminha a solicitação para o USB Connector Manager (UCM). O driver do cliente para UcmCx executa a ação apropriada para alterar o estado solicitado.
O EVT_USBPM_EVENT_CALLBACK do driver do cliente é invocado com ConnectorStateChange como os dados do evento. A chamada também contém o identificador do conector.
A rotina de conclusão do controlador cliente também é chamada e age de acordo.
Dentro do retorno de chamada, o driver do cliente chama UsbPm_RetrieveConnectorState com o identificador de conector fornecido para obter o estado mais recente do conector, inspeciona-o e pode decidir atualizar sua cópia local.
5: Remoção do Hub
- O UCM notifica o Policy Manager quando um dispositivo UcmCx (não um conector individual em um dispositivo UcmCx) é removido. O Policy Manager remove o hub de sua coleção de hubs.
- A implementação EVT_USBPM_EVENT_CALLBACK do driver de cliente é invocada com HubRemoval como os dados do evento. A chamada também contém o identificador de hub.
- Na implementação do driver cliente de EVT_USBPM_EVENT_CALLBACK, o driver cliente executa tarefas de limpeza para o hub e conectores que estão sendo removidos. O driver pode chamar UsbPm_RetrieveHubProperties e UsbPm_RetrieveConnectorProperties para obter as propriedades do hub e conectores.
6: Cancelamento de Registo de Cliente
- O driver do cliente chama UsbPm_Deregister quando o driver não precisa mais de notificações.
- O Gerente de Políticas marca o registo do identificador do cliente como anulado e não invoca o callback EVT_USBPM_EVENT_CALLBACK.