функция обратного вызова 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 |