Share via


Función UcmConnectorCreate (ucmmanager.h)

Crea un objeto de conector.

Sintaxis

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

Parámetros

[in] WdfDevice

Identificador de un objeto de dispositivo de marco que el controlador cliente recibió en la llamada anterior a WdfDeviceCreate.

[in] Config

Puntero a una estructura de UCM_CONNECTOR_CONFIG proporcionada por el autor de la llamada que se inicializa llamando a UCM_CONNECTOR_CONFIG_INIT.

[in] Attributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES proporcionada por el autor de la llamada que contiene atributos para el nuevo objeto de conector. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.

[out] Connector

Puntero a una ubicación que recibe un identificador para el nuevo objeto de conector.

Valor devuelto

UcmConnectorCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método puede devolver un valor NTSTATUS adecuado.

Comentarios

Si el controlador de cliente especifica un identificador de conector que ya está en uso, se produce un error en el método con STATUS_INVALID_PARAMETER código de error.

Si se especifica que el conector type-C sea un puerto de Dual-Role (DRP), el controlador cliente debe registrar su devolución de llamada de evento de EVT_UCM_CONNECTOR_SET_DATA_ROLE .

El objeto primario es WdfDevice. Puede establecer el miembro ParentObject de WDF_OBJECT_ATTRIBUTES en NULL o en el identificador WDFDEVICE. El objeto de conector se elimina cuando se elimina el objeto WDFDEVICE primario.

Un lugar adecuado para que un controlador cliente UCM llame a UcmConnectorCreate está en EvtDevicePrepareHardware o EvtDeviceD0Entry. Por el contrario, el controlador debe liberar el identificador UCMCONNECTOR en EvtDeviceReleaseHardware o EvtDeviceD0Exit.

Ejemplos

En este código de ejemplo se muestra cómo crear un conector de Type-C compatible con PD.

    
    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.");

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)
Library UcmCxstub.lib
IRQL PASSIVE_LEVEL

Consulte también

UCM_CONNECTOR_CONFIG

UCM_CONNECTOR_CONFIG_INIT