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_INIT 호출하여 초기화되는 호출자가 제공한 UCM_CONNECTOR_CONFIG 구조체에 대한 포인터입니다.
[in] Attributes
새 커넥터 개체에 대한 특성을 포함하는 호출자가 제공한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.
[out] Connector
새 커넥터 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.
반환 값
UcmConnectorCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 적절한 NTSTATUS 값을 반환할 수 있습니다.
설명
클라이언트 드라이버가 이미 사용 중인 커넥터 식별자를 지정하면 STATUS_INVALID_PARAMETER 오류 코드와 함께 메서드가 실패합니다.
Type-C 커넥터가 DRP(Dual-Role 포트)로 지정된 경우 클라이언트 드라이버는 EVT_UCM_CONNECTOR_SET_DATA_ROLE 이벤트 콜백을 등록해야 합니다.
부모 개체는 WdfDevice입니다. WDF_OBJECT_ATTRIBUTESParentObject 멤버를 NULL 또는 WDFDEVICE 핸들로 설정할 수 있습니다. 부모 WDFDEVICE 개체가 삭제되면 커넥터 개체가 삭제됩니다.
UCM 클라이언트 드라이버가 UcmConnectorCreate 를 호출할 수 있는 적절한 위치는 EvtDevicePrepareHardware 또는 EvtDeviceD0Entry에 있습니다. 반대로 드라이버는 EvtDeviceReleaseHardware 또는 EvtDeviceD0Exit에서 UCMCONNECTOR 핸들을 해제해야 합니다.
예제
이 예제 코드는 PD 지원 Type-C 커넥터를 만드는 방법을 보여 주는 코드입니다.
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 |