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