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 NTSTATUS adecuado.
Comentarios
Si el controlador de 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 de Dual-Role (DRP), el controlador cliente debe registrar su devolución de llamada de evento de 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 cliente UCM llame a UcmConnectorCreate está en EvtDevicePrepareHardware o EvtDeviceD0Entry. Por el contrario, el controlador debe liberar el identificador 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 | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Servidor mínimo compatible | Windows Server 2016 |
Plataforma de destino | Windows |
Versión mínima de KMDF | 1.15 |
Versión mínima de UMDF | 2.15 |
Encabezado | ucmmanager.h (incluya Ucmcx.h) |
Library | UcmCxstub.lib |
IRQL | PASSIVE_LEVEL |