функция обратного вызова 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(состояние) равно 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
целевая платформа Виндоус
минимальная версия KMDF 1.15
минимальная версия UMDF 2.15
заголовка ucmmanager.h (include Ucmcx.h)
IRQL PASSIVE_LEVEL

См. также

UcmConnectorCreate