EVT_UCM_CONNECTOR_SET_DATA_ROLE fonction de rappel (ucmmanager.h)
Implémentation par le pilote client de la fonction de rappel d’événement EVT_UCM_CONNECTOR_SET_DATA_ROLE qui permute le rôle de données du connecteur vers le rôle spécifié lorsqu’il est attaché à un connecteur partenaire.
Syntaxe
EVT_UCM_CONNECTOR_SET_DATA_ROLE EvtUcmConnectorSetDataRole;
NTSTATUS EvtUcmConnectorSetDataRole(
[in] UCMCONNECTOR Connector,
[in] UCM_DATA_ROLE DataRole
)
{...}
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] DataRole
Indicateur UCM_TYPEC_PARTNER 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, elle doit retourner une valeur de status pour laquelle NT_SUCCESS(status) est false.
Remarques
Pour inscrire une fonction de rappel EVT_UCM_CONNECTOR_SET_DATA_ROLE , le pilote client doit appeler UcmConnectorCreate.
L’extension d’infrastructure du gestionnaire de connecteurs USB (UcmCx) peut demander UcmTypeCPortStateUfp ou UcmTypeCPortStateDfp. 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 de données (DR_Swap). Le pilote appelle UcmConnectorDataDirectionChanged 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 DR_Swap, le pilote client doit rejeter la demande.
Exemples
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;
}
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 |