Función UcxControllerCreate (ucxcontroller.h)

Crea un objeto de controlador de host.

Sintaxis

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

Parámetros

[in] Device

Identificador del objeto de dispositivo de marco que el controlador de cliente recuperó en la llamada anterior a WdfDeviceCreate.

[in] Config

Puntero a una estructura de UCX_CONTROLLER_CONFIG asignada por el autor de la llamada que inicializó el controlador de cliente mediante una llamada a UCX_CONTROLLER_CONFIG_INIT. La estructura contiene información de configuración necesaria para crear el objeto .

[in, optional] Attributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que especifica atributos para el objeto de controlador.

[out] Controller

Puntero a una variable que recibe un identificador para el nuevo objeto de controlador.

Valor devuelto

El método devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver un código de error NTSTATUS adecuado.

Comentarios

El controlador de cliente para el controlador de host debe llamar a este método después de la llamada WdfDeviceCreate . El elemento primario del nuevo objeto de controlador de host es el objeto de dispositivo de marco.

Durante esta llamada, también se registran las implementaciones de devolución de llamada de eventos proporcionadas por el controlador cliente. Proporcione punteros de función a esas funciones mediante la llamada a establecer los miembros adecuados de UCX_CONTROLLER_CONFIG.

Si el tipo primario es PCI, inicialice el UCX_CONTROLLER_CONFIG llamando a UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Si el elemento primario es ACPI, llame a UCX_CONTROLLER_CONFIG_SET_ACPI_INFO en su lugar.

El método crea varias colas necesarias para controlar las solicitudes IOCTL enviadas al dispositivo USB.

El método registra una interfaz de dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER y un vínculo simbólico para que los componentes del modo de usuario puedan abrir un identificador para el controlador.

Ejemplos


    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;

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Plataforma de destino Windows
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado ucxcontroller.h (include Ucxclass.h)
IRQL PASSIVE_LEVEL

Consulte también

WdfDeviceCreate