다음을 통해 공유


EVT_UCX_ROOTHUB_GET_INFO 콜백 함수(ucxroothub.h)

UCX가 루트 허브에 대한 정보 요청을 받을 때 호출하는 클라이언트 드라이버의 구현입니다.

구문

EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;

void EvtUcxRoothubGetInfo(
  [in] UCXROOTHUB UcxRootHub,
  [in] WDFREQUEST Request
)
{...}

매개 변수

[in] UcxRootHub

루트 허브를 나타내는 UCX 개체에 대한 핸들입니다.

[in] Request

형식 ROOTHUB_INFO 구조체입니다.

반환 값

없음

설명

UCX 클라이언트 드라이버는 UcxRootHubCreate 메서드를 호출하여 이 콜백 함수를 UCX(USB 호스트 컨트롤러 확장)에 등록합니다.

_ROOTHUB_INFO 구조에는 루트 허브에서 지원하는 USB 2.0 및 USB 3.0 포트 수가 포함됩니다.

UCX가 EVT_UCX_ROOTHUB_GET_INFO 함수를 호출하면 루트 허브에서 노출되는 포트 수가 동일하게 유지됩니다. 실제 포트가 아닌 가상 포트입니다. 각 물리적 USB 커넥터는 루트 허브에서 속도가 다른 하나 이상의 포트로 표시됩니다.

클라이언트 드라이버는 요청에서 완료 상태 반환합니다. 드라이버는 WDFREQUEST를 비동기적으로 완료할 수 있습니다.

예제

VOID
RootHub_EvtRootHubGetInfo(
    UCXROOTHUB         UcxRootHub,
    WDFREQUEST         Request
)
/*++

    For sample demonstration purposes, this function returns statically
    defined information for the root hub.

--*/
{
    PUCX_ROOTHUB_CONTEXT    ucxRootHubContext;
    WDF_REQUEST_PARAMETERS  wdfRequestParams;
    PROOTHUB_INFO           rootHubInfo;
    NTSTATUS                status;

    ucxRootHubContext = GetUcxRootHubContext(UcxRootHub);

    WDF_REQUEST_PARAMETERS_INIT(&wdfRequestParams);
    WdfRequestGetParameters(Request, &wdfRequestParams);

    rootHubInfo = (PROOTHUB_INFO)wdfRequestParams.Parameters.Others.Arg1;

    if (rootHubInfo->Size < sizeof(ROOTHUB_INFO)) {
        DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_INFO Size %d", rootHubInfo->Size);
        status = STATUS_INVALID_PARAMETER;
        goto RootHub_EvtRootHubGetInfo;
    }

    rootHubInfo->ControllerType = ControllerTypeSoftXhci;
    rootHubInfo->NumberOf20Ports = ucxRootHubContext->NumberOf20Ports;
    rootHubInfo->NumberOf30Ports = ucxRootHubContext->NumberOf30Ports;
    rootHubInfo->MaxU1ExitLatency = ucxRootHubContext->U1DeviceExitLatency;
    rootHubInfo->MaxU2ExitLatency = ucxRootHubContext->U2DeviceExitLatency;

    DbgTrace(TL_INFO, RootHub, "RootHub_UcxEvtGetInfo NumberOf20Ports %d NumberOf30Ports %d", rootHubInfo->NumberOf20Ports, rootHubInfo->NumberOf30Ports);

    status = STATUS_SUCCESS;

RootHub_EvtRootHubGetInfo:

    WdfRequestComplete(Request, status);
}

요구 사항

요구 사항
대상 플랫폼 Windows
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 ucxroothub.h(Ucxclass.h 포함)
IRQL DISPATCH_LEVEL

추가 정보

_ROOTHUB_INFO