EVT_UCM_CONNECTOR_SET_DATA_ROLE función de devolución de llamada (ucmmanager.h)
La implementación del controlador de cliente de la función de devolución de llamada de evento EVT_UCM_CONNECTOR_SET_DATA_ROLE que intercambia el rol de datos del conector al rol especificado cuando se adjunta a un conector asociado.
Sintaxis
EVT_UCM_CONNECTOR_SET_DATA_ROLE EvtUcmConnectorSetDataRole;
NTSTATUS EvtUcmConnectorSetDataRole(
[in] UCMCONNECTOR Connector,
[in] UCM_DATA_ROLE DataRole
)
{...}
Parámetros
[in] Connector
Controle el conector que el controlador de cliente recibió en una llamada anterior al método UcmConnectorCreate .
[in] DataRole
Marca de tipo UCM_TYPEC_PARTNER que especifica el rol que se va a establecer.
Valor devuelto
Si la operación se realiza correctamente, la función de devolución de llamada debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE. De lo contrario, debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE.
Comentarios
Para registrar una función de devolución de llamada EVT_UCM_CONNECTOR_SET_DATA_ROLE, el controlador cliente debe llamar a UcmConnectorCreate.
La extensión del marco del administrador de conectores USB (UcmCx) puede solicitar UcmTypeCPortStateUfp o UcmTypeCPortStateDfp. Si el puerto ya está en el rol solicitado, el controlador cliente puede completar la solicitud sin realizar ningún cambio. De lo contrario, inicia una operación de intercambio de roles de datos (DR_Swap). El controlador llama a UcmConnectorDataDirectionChanged para notificar a UcmCx sobre el éxito o el error de esa operación. El controlador puede llamar a ese método dentro de la función de devolución de llamada.
El rol persiste para la conexión actual.
Si hay una operación de intercambio de roles pendiente, UcmCx no solicita otro intercambio de roles. Esas operaciones se serializan en intercambios de roles de energía y datos.
Una vez completada la operación de intercambio, si el puerto del asociado envía una solicitud de DR_Swap, el controlador cliente debe rechazar la solicitud.
Ejemplos
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Servidor mínimo compatible | Windows Server 2016 |
Plataforma de destino | Windows |
Versión mínima de KMDF | 1.15 |
Versión mínima de UMDF | 2.15 |
Encabezado | ucmmanager.h (incluya Ucmcx.h) |
IRQL | PASSIVE_LEVEL |