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 de concentrador 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 del centro 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 uno adecuado código de error NTSTATUS.

Observaciones

El controlador cliente del controlador de host debe llamar a este método después de la llamada WdfDeviceCreate. El elemento primario del nuevo objeto de concentrador 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 implementaciones de devolución de llamada de eventos proporcionadas por el controlador estableciendo miembros adecuados de UCX_ROOTHUB_CONFIG. Cuando se producen eventos en el objeto de concentrador 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 Valor
cliente mínimo admitido Windows 10
encabezado de ucxroothub.h
irQL PASSIVE_LEVEL

Consulte también

UCX_ROOTHUB_CONFIG