Функция 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 |