Compartilhar via


Função UcmConnectorCreate (ucmmanager.h)

Cria um objeto de conector.

Sintaxe

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

Parâmetros

[in] WdfDevice

Um identificador para um objeto de dispositivo de estrutura que o driver cliente recebeu na chamada anterior para WdfDeviceCreate.

[in] Config

Um ponteiro para uma estrutura de UCM_CONNECTOR_CONFIG fornecida pelo chamador que é inicializada chamando UCM_CONNECTOR_CONFIG_INIT.

[in] Attributes

Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES fornecida pelo chamador que contém atributos para o novo objeto do conector. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.

[out] Connector

Um ponteiro para um local que recebe um identificador para o novo objeto do conector.

Retornar valor

UcmConnectorCreate retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um valor NTSTATUS apropriado.

Comentários

Se o driver do cliente especificar um identificador de conector que já esteja em uso, o método falhará com STATUS_INVALID_PARAMETER código de erro.

Se o conector do Tipo C for especificado para ser uma porta de Dual-Role (DRP), o driver cliente deverá registrar seu EVT_UCM_CONNECTOR_SET_DATA_ROLE retorno de chamada de evento.

O objeto pai é WdfDevice. Você pode definir o membro ParentObject de WDF_OBJECT_ATTRIBUTES como NULL ou o identificador WDFDEVICE. O objeto do conector é excluído quando o objeto WDFDEVICE pai é excluído.

Um local apropriado para um driver cliente UCM chamar UcmConnectorCreate está em EvtDevicePrepareHardware ou EvtDeviceD0Entry. Por outro lado, o driver deve liberar o identificador UCMCONNECTOR em EvtDeviceReleaseHardware ou EvtDeviceD0Exit.

Exemplos

Este código de exemplo mostra como criar um conector Type-C compatível com 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 Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Windows
Versão mínima do KMDF 1.15
Versão mínima do UMDF 2.15
Cabeçalho ucmmanager.h (inclua Ucmcx.h)
Biblioteca UcmCxstub.lib
IRQL PASSIVE_LEVEL

Confira também

UCM_CONNECTOR_CONFIG

UCM_CONNECTOR_CONFIG_INIT