функция обратного вызова EVT_UCM_CONNECTOR_SET_POWER_ROLE (ucmmanager.h)

Реализация драйвером клиента функции обратного вызова события EVT_UCM_CONNECTOR_SET_POWER_ROLE , которая устанавливает для роли питания соединителя указанную роль при подключении к соединителю партнера.

Синтаксис

EVT_UCM_CONNECTOR_SET_POWER_ROLE EvtUcmConnectorSetPowerRole;

NTSTATUS EvtUcmConnectorSetPowerRole(
  [in] UCMCONNECTOR Connector,
  [in] UCM_POWER_ROLE PowerRole
)
{...}

Параметры

[in] Connector

Обработка соединителя, полученного драйвером клиента при предыдущем вызове метода UcmConnectorCreate .

[in] PowerRole

UCM_POWER_ROLE типизированный флаг, указывающий роль для задания.

Возвращаемое значение

Если операция выполнена успешно, функция обратного вызова должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(status) равно TRUE. В противном случае он должен возвращать значение состояния, для которого NT_SUCCESS(status) равно FALSE.

Комментарии

Чтобы зарегистрировать функцию обратного вызова EVT_UCM_CONNECTOR_SET_POWER_ROLE , клиент должен вызвать UcmConnectorCreate.

Расширение платформы диспетчера usb-соединителей (UcmCx) может запрашивать UcmPowerRoleSink или UcmPowerRoleSource. Если порт уже находится в запрошенной роли, драйвер клиента может выполнить запрос без каких-либо изменений. В противном случае запускается операция переключения ролей питания (PR_Swap). Драйвер вызывает UcmConnectorPowerDirectionChanged , чтобы уведомить UcmCx об успешном или неудачном выполнении этой операции. Драйвер может вызывать этот метод в функции обратного вызова.

Роль сохраняется для текущего подключения.

Если операция переключения ролей находится в состоянии ожидания, UcmCx не запрашивает другое переключение ролей. Эти операции сериализуются по переключениям ролей питания и данных.

После завершения операции переключения, если порт партнера отправляет запрос PR_Swap, драйвер клиента должен отклонить запрос.

Примеры


EVT_UCM_CONNECTOR_SET_POWER_ROLE     EvtSetPowerRole;  

NTSTATUS  
EvtSetPowerRole(  
    UCMCONNECTOR Connector,  
    UCM_POWER_ROLE PowerRole  
    )  
{  
    PCONNECTOR_CONTEXT connCtx;  
  
    TRACE_INFO("EvtSetPowerRole(%!UCM_POWER_ROLE!) Entry", PowerRole);  
  
    connCtx = GetConnectorContext(Connector);  

    //PR_Swap operation.  
  
  
    TRACE_FUNC_EXIT();  
    return STATUS_SUCCESS;  
}  

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Минимальная версия KMDF 1.15
Минимальная версия UMDF 2.15
Верхняя часть ucmmanager.h (включая Ucmcx.h)
IRQL PASSIVE_LEVEL

См. также раздел

UcmConnectorCreate