Compartir a través de


Función UcxRootHubCreate (ucxroothub.h)

Crea un objeto de concentrador raíz para el controlador de host especificado.

Sintaxis

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

Parámetros

[in] Controller

Identificador del objeto de controlador. El controlador cliente recuperó el identificador en una llamada anterior a UcxControllerCreate.

[in] Config

Puntero a una estructura de UCX_ROOTHUB_CONFIG que describe varias operaciones de configuración para crear el objeto del centro raíz.

[in, optional] Attributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que especifica atributos para el objeto concentrador raíz.

[out] RootHub

Puntero a una variable que recibe un identificador para el nuevo objeto de concentrador raíz.

Valor devuelto

El método devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver un código de error NTSTATUS adecuado.

Comentarios

El controlador de cliente para el controlador de host debe llamar a este método después de la llamada WdfDeviceCreate . El elemento primario del nuevo objeto central raíz es el objeto de controlador.

Antes de llamar a este método, el controlador cliente debe inicializar una estructura de UCX_ROOTHUB_CONFIG llamando a UCX_ROOTHUB_CONFIG_INIT. Proporcione punteros de función a las implementaciones de devolución de llamada de eventos proporcionadas por el controlador estableciendo los miembros adecuados de UCX_ROOTHUB_CONFIG. Cuando se producen eventos en el objeto del centro raíz, UCX invoca esas funciones de devolución de llamada.

Ejemplos

    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;

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Encabezado ucxroothub.h
IRQL PASSIVE_LEVEL

Consulte también

UCX_ROOTHUB_CONFIG