Поделиться через


Функция 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 путем вызова UCX_ROOTHUB_CONFIG_INIT. Укажите указатели функций на реализации обратного вызова событий, предоставленных драйвером, путем задания соответствующих членов 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