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


Функция UcxControllerCreate (ucxcontroller.h)

Создает объект контроллера узла.

Синтаксис

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

Параметры

[in] Device

Дескриптор объекта устройства платформы, полученный драйвером клиента в предыдущем вызове WdfDeviceCreate.

[in] Config

Указатель на структуру, выделенной вызывающим UCX_CONTROLLER_CONFIG, которая инициализирована драйвером клиента путем вызова UCX_CONTROLLER_CONFIG_INIT. Структура содержит сведения о конфигурации, необходимые для создания объекта.

[in, optional] Attributes

Указатель на структуру, выделенную вызывающим объектом, WDF_OBJECT_ATTRIBUTES, которая задает атрибуты для объекта контроллера.

[out] Controller

Указатель на переменную, которая получает дескриптор к новому объекту контроллера.

Возвращаемое значение

Метод возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть один соответствующий код ошибки NTSTATUS.

Замечания

Драйвер клиента для контроллера узла должен вызывать этот метод после вызова WdfDeviceCreate. Родительским объектом нового контроллера узла является объект устройства платформы.

Во время этого вызова также регистрируются предоставляемые драйвером клиента реализации обратного вызова событий. Укажите указатели функций на эти функции путем задания соответствующих членов UCX_CONTROLLER_CONFIG.

Если родительский тип — PCI, инициализировать UCX_CONTROLLER_CONFIG путем вызова UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Если родитель является ACPI, вызовите UCX_CONTROLLER_CONFIG_SET_ACPI_INFO вместо этого.

Метод создает различные очереди, необходимые для обработки запросов IOCTL, отправленных на USB-устройство.

Метод регистрирует интерфейс устройства GUID_DEVINTERFACE_USB_HOST_CONTROLLER и символьную связь, чтобы компоненты пользовательского режима могли открывать дескриптор контроллеру.

Примеры


    WDF_OBJECT_ATTRIBUTES                   objectAttributes;
    UCX_CONTROLLER_CONFIG                   ucxControllerConfig;
    UCXCONTROLLER                           ucxController;
    PUCX_CONTROLLER_CONTEXT                 ucxControllerContext;

    // Create the controller
    //
    UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
    ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
    ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
    ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
    
    status = UcxControllerCreate(wdfDevice,
        &ucxControllerConfig,
        &objectAttributes,
        &ucxController);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Controller created.");

    controllerContext->UcxController = ucxController;

    ucxControllerContext = GetUcxControllerContext(ucxController);
    ucxControllerContext->WdfDevice = wdfDevice;

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10
целевая платформа Виндоус
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка ucxcontroller.h (include Ucxclass.h)
IRQL PASSIVE_LEVEL

См. также

WdfDeviceCreate