Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Реализация клиентского драйвера функции обратного вызова событий 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 |