Partager via


EVT_UCM_CONNECTOR_SET_POWER_ROLE fonction de rappel (ucmmanager.h)

L’implémentation par le pilote client de la fonction de rappel d’événement EVT_UCM_CONNECTOR_SET_POWER_ROLE qui définit le rôle d’alimentation du connecteur sur le rôle spécifié lorsqu’il est attaché à un connecteur partenaire.

Syntaxe

EVT_UCM_CONNECTOR_SET_POWER_ROLE EvtUcmConnectorSetPowerRole;

NTSTATUS EvtUcmConnectorSetPowerRole(
  [in] UCMCONNECTOR Connector,
  [in] UCM_POWER_ROLE PowerRole
)
{...}

Paramètres

[in] Connector

Gérez le connecteur que le pilote client a reçu lors d’un appel précédent à la méthode UcmConnectorCreate .

[in] PowerRole

Indicateur de type UCM_POWER_ROLE qui spécifie le rôle à définir.

Valeur retournée

Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS ou une autre valeur status pour laquelle NT_SUCCESS(status) est égal à TRUE. Sinon, il doit retourner une valeur status pour laquelle NT_SUCCESS(status) est false.

Remarques

Pour inscrire une fonction de rappel EVT_UCM_CONNECTOR_SET_POWER_ROLE , le client doit appeler UcmConnectorCreate.

L’extension de framework du gestionnaire de connecteurs USB (UcmCx) peut demander UcmPowerRoleSink ou UcmPowerRoleSource. Si le port est déjà dans le rôle demandé, le pilote client peut effectuer la demande sans aucune modification. Sinon, il démarre une opération d’échange de rôle d’alimentation (PR_Swap). Le pilote appelle UcmConnectorPowerDirectionChanged pour informer UcmCx de la réussite ou de l’échec de cette opération. Le pilote peut appeler cette méthode dans la fonction de rappel.

Le rôle persiste pour la connexion actuelle.

Si une opération d’échange de rôle est en attente, UcmCx ne demande pas d’autre échange de rôle. Ces opérations sont sérialisées entre les échanges de rôles d’alimentation et de données.

Une fois l’opération d’échange terminée, si le port partenaire envoie une demande de PR_Swap, le pilote client doit rejeter la demande.

Exemples


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;  
}  

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Windows
Version KMDF minimale 1.15
Version UMDF minimale 2.15
En-tête ucmmanager.h (inclure Ucmcx.h)
IRQL PASSIVE_LEVEL

Voir aussi

UcmConnectorCreate