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 |