Função UcxRootHubCreate (ucxroothub.h)

Cria um objeto de hub raiz para o controlador de host especificado.

Sintaxe

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

Parâmetros

[in] Controller

Um identificador para o objeto do controlador. O driver cliente recuperou o identificador em uma chamada anterior para UcxControllerCreate.

[in] Config

Um ponteiro para uma estrutura UCX_ROOTHUB_CONFIG que descreve várias operações de configuração para criar o objeto de hub raiz.

[in, optional] Attributes

Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que especifica atributos para o objeto de hub raiz.

[out] RootHub

Um ponteiro para uma variável que recebe um identificador para o novo objeto de hub raiz.

Retornar valor

O método retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um código de erro NTSTATUS apropriado.

Comentários

O driver do cliente para o controlador host deve chamar esse método após a chamada WdfDeviceCreate . O pai do novo objeto de hub raiz é o objeto do controlador.

Antes de chamar esse método, o driver do cliente deve inicializar uma estrutura de UCX_ROOTHUB_CONFIG chamando UCX_ROOTHUB_CONFIG_INIT. Forneça ponteiros de função para implementações de retorno de chamada de evento fornecidas pelo driver definindo os membros apropriados do UCX_ROOTHUB_CONFIG. Quando ocorrem eventos no objeto do hub raiz, o UCX invoca essas funções de retorno de chamada.

Exemplos

    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 com suporte Windows 10
Cabeçalho ucxroothub.h
IRQL PASSIVE_LEVEL

Confira também

UCX_ROOTHUB_CONFIG