Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает объект соединителя.
Синтаксис
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 |