Функция 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