UcmConnectorCreate, fonction (ucmmanager.h)

Crée un objet connecteur.

Syntaxe

NTSTATUS UcmConnectorCreate(
  [in]  WDFDEVICE              WdfDevice,
  [in]  PUCM_CONNECTOR_CONFIG  Config,
  [in]  PWDF_OBJECT_ATTRIBUTES Attributes,
  [out] UCMCONNECTOR           *Connector
);

Paramètres

[in] WdfDevice

Handle vers un objet d’appareil framework reçu par le pilote client lors de l’appel précédent à WdfDeviceCreate.

[in] Config

Pointeur vers une structure de UCM_CONNECTOR_CONFIG fournie par l’appelant qui est initialisée en appelant UCM_CONNECTOR_CONFIG_INIT.

[in] Attributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES fournie par l’appelant qui contient des attributs pour le nouvel objet de connecteur. Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.

[out] Connector

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet de connecteur.

Valeur de retour

UcmConnectorCreate retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner une valeur NTSTATUS appropriée.

Remarques

Si le pilote client spécifie un identificateur de connecteur déjà utilisé, la méthode échoue avec STATUS_INVALID_PARAMETER code d’erreur.

Si le connecteur Type-C est spécifié pour être un port Dual-Role (DRP), le pilote client doit inscrire son rappel d’événement EVT_UCM_CONNECTOR_SET_DATA_ROLE.

L’objet parent est WdfDevice. Vous pouvez définir le membre ParentObject de WDF_OBJECT_ATTRIBUTES sur NULL ou le handle WDFDEVICE. L’objet connecteur est supprimé lorsque l’objet WDFDEVICE parent est supprimé.

Un emplacement approprié pour un pilote client UCM pour appeler UcmConnectorCreate se trouve dans EvtDevicePrepareHardware ou EvtDeviceD0Entry. À l’inverse, le pilote doit libérer le handle UCMCONNECTOR dans EvtDeviceReleaseHardware ou EvtDeviceD0Exit.

Exemples

Cet exemple de code montre comment créer un connecteur Type-C compatible.

    
    UCMCONNECTOR Connector;
  
    UCM_CONNECTOR_CONFIG_INIT(&connCfg, 0);

    UCM_CONNECTOR_TYPE_C_CONFIG_INIT(
        &connCfg.TypeCConfig,
        UcmTypeCOperatingModeDrp,
        UcmTypeCCurrentDefaultUsb | UcmTypeCCurrent1500mA | UcmTypeCCurrent3000mA);

    connCfg.EvtSetDataRole = EvtSetDataRole;

    UCM_CONNECTOR_PD_CONFIG_INIT(&connCfg.PdConfig, UcmPowerRoleSink | UcmPowerRoleSource);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attr, CONNECTOR_CONTEXT);

    status = UcmConnectorCreate(Device, &connCfg, &attr, &Connector);
    if (!NT_SUCCESS(status))
    {
        TRACE_ERROR(
            "UcmConnectorCreate failed with %!STATUS!.",
            status);
        goto Exit;
    }

    TRACE_INFO("UcmConnectorCreate() succeeded.");

Exigences

Exigence Valeur
client minimum pris en charge Windows 10
serveur minimum pris en charge Windows Server 2016
plateforme cible Windows
version minimale de KMDF 1.15
version minimale de UMDF 2.15
d’en-tête ucmmanager.h (include Ucmcx.h)
bibliothèque UcmCxstub.lib
IRQL PASSIVE_LEVEL

Voir aussi

UCM_CONNECTOR_CONFIG

UCM_CONNECTOR_CONFIG_INIT