Condividi tramite


Funzione UcxRootHubCreate (ucxroothub.h)

Crea un oggetto hub radice per il controller host specificato.

Sintassi

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

Parametri

[in] Controller

Handle per l'oggetto controller. Il driver client ha recuperato l'handle in una chiamata precedente a UcxControllerCreate.

[in] Config

Puntatore a una struttura UCX_ROOTHUB_CONFIG che descrive varie operazioni di configurazione per la creazione dell'oggetto hub radice.

[in, optional] Attributes

Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che specifica gli attributi per l'oggetto hub radice.

[out] RootHub

Puntatore a una variabile che riceve un handle per il nuovo oggetto hub radice.

Valore restituito

Il metodo restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire un codice di errore NTSTATUS appropriato.

Commenti

Il driver client per il controller host deve chiamare questo metodo dopo la chiamata WdfDeviceCreate . L'elemento padre del nuovo oggetto hub radice è l'oggetto controller.

Prima di chiamare questo metodo, il driver client deve inizializzare una struttura UCX_ROOTHUB_CONFIG chiamando UCX_ROOTHUB_CONFIG_INIT. Fornire puntatori a funzioni alle implementazioni di callback degli eventi fornite dal driver impostando i membri appropriati di UCX_ROOTHUB_CONFIG. Quando si verificano eventi nell'oggetto hub radice, UCX richiama tali funzioni di callback.

Esempio

    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;

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Intestazione ucxroothub.h
IRQL PASSIVE_LEVEL

Vedi anche

UCX_ROOTHUB_CONFIG