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 |