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)可以请求 UcmPowerRoleSinkUcmPowerRoleSource。 如果端口已处于请求的角色中,则客户端驱动程序可以在不进行任何更改的情况下完成请求。 否则,它将启动电源角色交换作(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 (包括 Ucmcx.h)
IRQL PASSIVE_LEVEL

另请参阅

UcmConnectorCreate