Функция UcmConnectorCreate (ucmmanager.h)

Создает объект соединителя.

Синтаксис

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

Параметры

[in] WdfDevice

Дескриптор объекта устройства платформы, который драйвер клиента получил в предыдущем вызове WdfDeviceCreate.

[in] Config

Указатель на предоставленную вызывающей UCM_CONNECTOR_CONFIG структуру, инициализируемый путем вызова UCM_CONNECTOR_CONFIG_INIT.

[in] Attributes

Указатель на структуру WDF_OBJECT_ATTRIBUTES , которая содержит атрибуты для нового объекта соединителя. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.

[out] Connector

Указатель на расположение, которое получает дескриптор нового объекта соединителя.

Возвращаемое значение

UcmConnectorCreate возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть соответствующее значение NTSTATUS .

Комментарии

Если драйвер клиента указывает идентификатор соединителя, который уже используется, метод завершается ошибкой с STATUS_INVALID_PARAMETER кодом.

Если соединитель Type-C указан как порт Dual-Role (DRP), драйвер клиента должен зарегистрировать обратный вызов события EVT_UCM_CONNECTOR_SET_DATA_ROLE .

Родительский объект — WdfDevice. Для элемента ParentObjectWDF_OBJECT_ATTRIBUTES можно задать значение NULL или дескриптор WDFDEVICE. Объект соединителя удаляется при удалении родительского объекта WDFDEVICE.

Драйвер клиента UCM может вызывать UcmConnectorCreate в EvtDevicePrepareHardware или EvtDeviceD0Entry. И наоборот, драйвер должен освободить дескриптор UCMCONNECTOR в EvtDeviceReleaseHardware или EvtDeviceD0Exit.

Примеры

В этом примере кода показано, как создать соединитель Type-C с поддержкой 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.");

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Минимальная версия KMDF 1.15
Минимальная версия UMDF 2.15
Верхняя часть ucmmanager.h (включая Ucmcx.h)
Библиотека UcmCxstub.lib
IRQL PASSIVE_LEVEL

См. также раздел

UCM_CONNECTOR_CONFIG

UCM_CONNECTOR_CONFIG_INIT