Compartir a través de


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 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 cliente llamando 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 uno adecuado código de error NTSTATUS.

Observaciones

El controlador de cliente del 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 una llamada al establecimiento de 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 Valor
cliente mínimo admitido Windows 10
de la plataforma de destino de Windows
versión mínima de KMDF 1.0
versión mínima de UMDF 2.0
encabezado de ucxcontroller.h (incluya Ucxclass.h)
irQL PASSIVE_LEVEL

Consulte también

WdfDeviceCrear