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