Função UcmConnectorCreate (ucmmanager.h)
Cria um objeto de conector.
Sintaxe
NTSTATUS UcmConnectorCreate(
[in] WDFDEVICE WdfDevice,
[in] PUCM_CONNECTOR_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCMCONNECTOR *Connector
);
Parâmetros
[in] WdfDevice
Um identificador para um objeto de dispositivo de estrutura que o driver cliente recebeu na chamada anterior para WdfDeviceCreate.
[in] Config
Um ponteiro para uma estrutura de UCM_CONNECTOR_CONFIG fornecida pelo chamador que é inicializada chamando UCM_CONNECTOR_CONFIG_INIT.
[in] Attributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES fornecida pelo chamador que contém atributos para o novo objeto do conector. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.
[out] Connector
Um ponteiro para um local que recebe um identificador para o novo objeto do conector.
Retornar valor
UcmConnectorCreate retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um valor NTSTATUS apropriado.
Comentários
Se o driver do cliente especificar um identificador de conector que já esteja em uso, o método falhará com STATUS_INVALID_PARAMETER código de erro.
Se o conector do Tipo C for especificado para ser uma porta de Dual-Role (DRP), o driver cliente deverá registrar seu EVT_UCM_CONNECTOR_SET_DATA_ROLE retorno de chamada de evento.
O objeto pai é WdfDevice. Você pode definir o membro ParentObject de WDF_OBJECT_ATTRIBUTES como NULL ou o identificador WDFDEVICE. O objeto do conector é excluído quando o objeto WDFDEVICE pai é excluído.
Um local apropriado para um driver cliente UCM chamar UcmConnectorCreate está em EvtDevicePrepareHardware ou EvtDeviceD0Entry. Por outro lado, o driver deve liberar o identificador UCMCONNECTOR em EvtDeviceReleaseHardware ou EvtDeviceD0Exit.
Exemplos
Este código de exemplo mostra como criar um conector Type-C compatível com 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 com suporte | Windows 10 |
Servidor mínimo com suporte | Windows Server 2016 |
Plataforma de Destino | Windows |
Versão mínima do KMDF | 1.15 |
Versão mínima do UMDF | 2.15 |
Cabeçalho | ucmmanager.h (inclua Ucmcx.h) |
Biblioteca | UcmCxstub.lib |
IRQL | PASSIVE_LEVEL |