функция обратного вызова EVT_UCM_CONNECTOR_SET_DATA_ROLE (ucmmanager.h)
Реализация драйвером клиента функции обратного вызова события EVT_UCM_CONNECTOR_SET_DATA_ROLE , которая переключает роль данных соединителя на указанную роль при подключении к соединителю партнера.
Синтаксис
EVT_UCM_CONNECTOR_SET_DATA_ROLE EvtUcmConnectorSetDataRole;
NTSTATUS EvtUcmConnectorSetDataRole(
[in] UCMCONNECTOR Connector,
[in] UCM_DATA_ROLE DataRole
)
{...}
Параметры
[in] Connector
Обработка соединителя, полученного драйвером клиента при предыдущем вызове метода UcmConnectorCreate .
[in] DataRole
Флаг UCM_TYPEC_PARTNER типа, указывающий роль для задания.
Возвращаемое значение
Если операция выполнена успешно, функция обратного вызова должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(status) равно TRUE. В противном случае он должен возвращать значение состояния, для которого NT_SUCCESS (status) равно FALSE.
Комментарии
Чтобы зарегистрировать функцию обратного вызова EVT_UCM_CONNECTOR_SET_DATA_ROLE, драйвер клиента должен вызвать UcmConnectorCreate.
Расширение платформы диспетчера usb-соединителей (UcmCx) может запрашивать UcmTypeCPortStateUfp или UcmTypeCPortStateDfp. Если порт уже находится в запрошенной роли, драйвер клиента может выполнить запрос без каких-либо изменений. В противном случае запускается операция переключения ролей данных (DR_Swap). Драйвер вызывает UcmConnectorDataDirectionChanged , чтобы уведомить UcmCx об успешном или неудачном выполнении этой операции. Драйвер может вызывать этот метод в функции обратного вызова.
Роль сохраняется для текущего подключения.
Если операция переключения ролей находится в состоянии ожидания, UcmCx не запрашивает другое переключение ролей. Эти операции сериализуются по переключениям ролей питания и данных.
Если после завершения операции переключения порт партнера отправляет запрос DR_Swap, драйвер клиента должен отклонить запрос.
Примеры
EVT_UCM_CONNECTOR_SET_DATA_ROLE EvtSetDataRole;
NTSTATUS
EvtSetDataRole(
UCMCONNECTOR Connector,
UCM_TYPE_C_PORT_STATE DataRole
)
{
PCONNECTOR_CONTEXT connCtx;
TRACE_INFO("EvtSetDataRole(%!UCM_TYPE_C_PORT_STATE!) Entry", DataRole);
connCtx = GetConnectorContext(Connector);
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 |