Función UcmConnectorCreate (ucmmanager.h)
Crea un objeto de conector.
Sintaxis
NTSTATUS UcmConnectorCreate(
[in] WDFDEVICE WdfDevice,
[in] PUCM_CONNECTOR_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCMCONNECTOR *Connector
);
Parámetros
[in] WdfDevice
Identificador de un objeto de dispositivo de marco que el controlador cliente recibió en la llamada anterior a WdfDeviceCreate.
[in] Config
Puntero a una estructura de UCM_CONNECTOR_CONFIG proporcionada por el autor de la llamada que se inicializa llamando a UCM_CONNECTOR_CONFIG_INIT.
[in] Attributes
Puntero a una estructura de WDF_OBJECT_ATTRIBUTES proporcionada por el autor de la llamada que contiene atributos para el nuevo objeto de conector. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.
[out] Connector
Puntero a una ubicación que recibe un identificador para el nuevo objeto de conector.
Valor devuelto
UcmConnectorCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método puede devolver un valor de NTSTATUS adecuado.
Observaciones
Si el controlador cliente especifica un identificador de conector que ya está en uso, se produce un error en el método con STATUS_INVALID_PARAMETER código de error.
Si se especifica que el conector Type-C sea un puerto Dual-Role (DRP), el controlador cliente debe registrar su devolución de llamada de evento EVT_UCM_CONNECTOR_SET_DATA_ROLE.
El objeto primario es WdfDevice. Puede establecer el miembro ParentObject de WDF_OBJECT_ATTRIBUTES en NULL o en el identificador WDFDEVICE. El objeto de conector se elimina cuando se elimina el objeto WDFDEVICE primario.
Un lugar adecuado para que un controlador de cliente UCM llame a UcmConnectorCreate está en EvtDevicePrepareHardware o EvtDeviceD0Entry. Por el contrario, el controlador debe liberar el controlador UCMCONNECTOR en EvtDeviceReleaseHardware o EvtDeviceD0Exit.
Ejemplos
En este código de ejemplo se muestra cómo crear un conector de Type-C compatible con 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 admitido | Windows 10 |
servidor mínimo admitido | Windows Server 2016 |
de la plataforma de destino de | Windows |
versión mínima de KMDF | 1.15 |
versión mínima de UMDF | 2.15 |
encabezado de | ucmmanager.h (include Ucmcx.h) |
biblioteca de | UcmCxstub.lib |
irQL | PASSIVE_LEVEL |