Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диспетчер политик USB Type-C от Microsoft отслеживает действия соединителей USB Type-C. Windows версии 1809 представляет набор интерфейсов программирования, которые можно использовать для записи драйвера клиента в Диспетчер политик (называемый драйвером клиента PM в этом разделе). Драйвер клиента может участвовать в принятии решений политики для соединителей USB-Type-C. С помощью этого набора можно написать драйвер экспорта в режиме ядра или драйвер пользовательского режима.
Диспетчер политик получает и координирует сведения от диспетчера соединителей USB (UCM), контроллера USB-хоста, функции USB и вашего клиентского драйвера PM. Если требуется уведомление пользовательского интерфейса, менеджер политик отправляет запрос в системную оболочку.
Для полного обзора драйверов см. раздел "Архитектура: проектирование USB Type-C для системы Windows".
Важные API
API-интерфейсы PM объявляются в заголовке Usbpmapi.h.
1. Регистрация клиента
- Драйвер клиента вызывает UsbPm_Register для регистрации функций обратного вызова драйвера.
- Драйвер клиента ожидает события из диспетчера политик.
Успешный вызов UsbPm_Register не гарантирует, что драйвер клиента запросил доступ. Когда диспетчер политик готов, EVT_USBPM_EVENT_CALLBACK драйвера вызывается с помощью PolicyManagerArrival в качестве данных события, указывающих на фактический доступ.
- Вызов UsbPm_Register возвращает дескриптор регистрации.
Драйвер клиента может получать EVT_USBPM_EVENT_CALLBACK даже до того, как вернётся UsbPm_Register.
2. Прибытие концентратора
- При поступлении устройства UCMCX менеджер политики получает уведомление и отслеживает все обработчики концентратора вместе со свойствами и состояниями всех разъемов на каждом концентраторе.
- Драйвер клиента EVT_USBPM_EVENT_CALLBACK вызывается с HubArrivalRemoval в качестве данных события. Вызов также содержит дескриптор концентратора.
- В реализации драйвера клиента EVT_USBPM_EVENT_CALLBACKдрайвер вызывает UsbPm_RetrieveHubProperties получить количество соединителей в концентраторе, а затем вызывает UsbPm_RetrieveConnectorProperties и UsbPm_RetrieveConnectorState, чтобы получить дополнительные сведения о каждом соединителе.
3. Изменение состояния соединителя
- В связи с изменением состояния соединителя, например, Type-C присоединение или отсоединение, согласование контракта PD, менеджер политик обновляет информацию о состоянии соединителя.
- EVT_USBPM_EVENT_CALLBACK вызывается в драйвере клиента с данными события ConnectorStateChange. Вызов также содержит дескриптор соединителя.
- Подпрограмма завершения драйвера клиента также вызывается и принимает соответствующие меры.
- В реализации драйвера клиента EVT_USBPM_EVENT_CALLBACKдрайвер вызывает UsbPm_RetrieveConnectorProperties. Используя заданный дескриптор соединителя, драйвер получает последнее состояние соединителя, проверяет его и может решить обновить локальную копию.
4. Изменение, инициированное драйвером клиента
Чтобы запросить изменение, драйвер клиента вызывает UsbPm_AssignConnectorPowerLevel.
Драйвер клиента может вызвать эту функцию в обратном вызове EVT_USBPM_EVENT_CALLBACK, зарегистрированном с помощью UsbPm_Register.
Диспетчер политик перенаправит запрос в диспетчер соединителей USB (UCM). Драйвер клиента для UcmCx принимает соответствующее действие, чтобы изменить запрошенное состояние.
EVT_USBPM_EVENT_CALLBACK драйвера клиента вызывается с помощью ConnectorStateChange в качестве данных события. Вызов также содержит дескриптор соединительного элемента.
Завершающая подпрограмма клиентского драйвера также вызывается и предпринимает соответствующие действия.
В обратном вызове драйвер клиента вызывает UsbPm_RetrieveConnectorState с заданным дескриптором разъема для получения последнего состояния разъема, проверяет его и может принять решение обновить локальную копию.
5. Удаление концентратора
- UCM уведомляет диспетчер политик при удалении устройства UcmCx (а не отдельного соединителя на устройстве UcmCx). Диспетчер политик удаляет хаб из своей коллекции хабов.
- Реализация EVT_USBPM_EVENT_CALLBACK драйвера клиента вызывается с данными события HubRemoval. Вызов также содержит хэндл хаба.
- В реализации драйвера клиента EVT_USBPM_EVENT_CALLBACKдрайвер клиента выполняет задачи по очистке для концентраторов и соединителей, которые удаляются. Драйвер может вызывать UsbPm_RetrieveHubProperties и UsbPm_RetrieveConnectorProperties, чтобы получить свойства концентратора и соединителей.
6. Отмена регистрации клиента
- Драйвер клиента вызывает UsbPm_Deregister, когда драйвер больше не нуждается в уведомлениях.
- Менеджер политики помечает регистрацию клиента как снятую с учёта и не вызывает обратный вызов EVT_USBPM_EVENT_CALLBACK.
См. также
- запись драйвера соединителя USB-Type-C
- Написать драйвер контроллера порта USB Type-C
- Разработка клиентского драйвера контроллера функций USB