Функция 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. Вы можете задать для элемента WDF_OBJECT_ATTRIBUTES ParentObject значение 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
целевая платформа Виндоус
минимальная версия KMDF 1.15
минимальная версия UMDF 2.15
заголовка ucmmanager.h (include Ucmcx.h)
библиотеки UcmCxstub.lib
IRQL PASSIVE_LEVEL

См. также

UCM_CONNECTOR_CONFIG

UCM_CONNECTOR_CONFIG_INIT