UcxRootHubCreate 함수(ucxroothub.h)

지정된 호스트 컨트롤러에 대한 루트 허브 개체를 만듭니다.

구문

NTSTATUS UcxRootHubCreate(
  [in]           UCXCONTROLLER          Controller,
  [in]           PUCX_ROOTHUB_CONFIG    Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXROOTHUB             *RootHub
);

매개 변수

[in] Controller

컨트롤러 개체에 대한 핸들입니다. 클라이언트 드라이버는 UcxControllerCreate에 대한 이전 호출에서 핸들을 검색했습니다.

[in] Config

루트 허브 개체를 만들기 위한 다양한 구성 작업을 설명하는 UCX_ROOTHUB_CONFIG 구조체에 대한 포인터입니다.

[in, optional] Attributes

루트 허브 개체의 특성을 지정하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.

[out] RootHub

새 루트 허브 개체에 대한 핸들을 수신하는 변수에 대한 포인터입니다.

반환 값

메서드는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드가 적절한 NTSTATUS 오류 코드 하나를 반환할 수 있습니다.

설명

호스트 컨트롤러의 클라이언트 드라이버는 WdfDeviceCreate 호출 후에 이 메서드를 호출해야 합니다. 새 루트 허브 개체의 부모는 컨트롤러 개체입니다.

이 메서드를 호출하기 전에 클라이언트 드라이버는 UCX_ROOTHUB_CONFIG_INIT 호출하여 UCX_ROOTHUB_CONFIG 구조를 초기화해야 합니다. UCX_ROOTHUB_CONFIG 적절한 멤버를 호출하여 드라이버에서 제공하는 이벤트 콜백 구현 에 대한 함수 포인터를 제공합니다. 루트 허브 개체에서 이벤트가 발생하면 UCX는 이러한 콜백 함수를 호출합니다.

예제

    UCX_ROOTHUB_CONFIG                      ucxRootHubConfig;
    UCXROOTHUB                              ucxRootHub;
    PUCX_ROOTHUB_CONTEXT                    ucxRootHubContext;
  

    // Create the root hub
    //
    UCX_ROOTHUB_CONFIG_INIT(&ucxRootHubConfig,
                            RootHub_EvtRootHubClearHubFeature,
                            RootHub_EvtRootHubClearPortFeature,
                            RootHub_EvtRootHubGetHubStatus,
                            RootHub_EvtRootHubGetPortStatus,
                            RootHub_EvtRootHubSetHubFeature,
                            RootHub_EvtRootHubSetPortFeature,
                            RootHub_EvtRootHubGetPortErrorCount,
                            RootHub_EvtRootHubInterruptTx,
                            RootHub_EvtRootHubGetInfo,
                            RootHub_EvtRootHubGet20PortInfo,
                            RootHub_EvtRootHubGet30PortInfo);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_ROOTHUB_CONTEXT);

    status = UcxRootHubCreate(ucxController,
                              &ucxRootHubConfig,
                              &objectAttributes,
                              &ucxRootHub);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxRootHubCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Root Hub created.");

    ucxControllerContext->UcxRootHub = ucxRootHub;

    ucxRootHubContext = GetUcxRootHubContext(ucxRootHub);
    ucxRootHubContext->UcxController = ucxController;

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
머리글 ucxroothub.h
IRQL PASSIVE_LEVEL

추가 정보

UCX_ROOTHUB_CONFIG