Compartir a través de


Identificadores de conexión para dispositivos periféricos de SPB-Connected

Para que un controlador pueda enviar solicitudes de E/S a un dispositivo periférico en un bus periférico simple (SPB), el controlador debe abrir una conexión lógica al dispositivo. A través de esta conexión, el controlador puede enviar solicitudes de lectura y escritura para transferir datos hacia y desde el dispositivo. Además, el controlador puede enviar solicitudes de control de E/S (IOCTL) al dispositivo para realizar operaciones específicas de SPB.

En el inicio del sistema, el administrador de Plug and Play (PnP) enumera los dispositivos PnP y los que no son PnP. En el caso de un dispositivo periférico que no sea PnP que tenga una conexión fija a un SPB, el administrador de PnP consulta el firmware ACPI de la plataforma de hardware para obtener un conjunto de parámetros de conexión que describen cómo acceder al dispositivo. Estos parámetros de conexión identifican el controlador SPB para el bus al que está conectado el dispositivo e incluyen otra información, como la dirección del bus y la frecuencia del reloj del bus, que el controlador necesita para comunicarse con el dispositivo.

El administrador de PnP asigna un identificador (denominado identificador de conexión) a los parámetros de conexión para el dispositivo periférico conectado a SPB. El administrador de PnP almacena este identificador y los parámetros de conexión juntos en un almacén de datos del sistema denominado centro de recursos. (El centro de recursos es un almacén de datos interno en el que el administrador de PnP almacena información de configuración sobre un dispositivo periférico conectado a SPB). El identificador de conexión encapsula estos parámetros para que el controlador no necesite proporcionarlos explícitamente.

El controlador de un dispositivo periférico conectado a SPB recibe el identificador de conexión del dispositivo como parte de los recursos de hardware asignados del controlador. Cuando el controlador del dispositivo periférico llama a una función del sistema para abrir una conexión al dispositivo, el controlador proporciona el identificador de conexión, que la función usa para recuperar los parámetros de conexión del dispositivo desde el centro de recursos.

El desarrollador de controladores puede usar el marco de controladores del modo de usuario (UMDF) o el marco de controladores del modo kernel (KMDF) para compilar el controlador para el dispositivo periférico conectado a SPB. Un controlador UMDF recibe sus recursos (que incluyen el identificador de conexión) cuando el marco llama al método IPnpCallbackHardware2::OnPrepareHardware del controlador. Un controlador KMDF recibe sus recursos de hardware durante una devolución de llamada EvtDevicePrepareHardware .

Para permitir que un controlador periférico UMDF reciba identificadores de conexión en su lista de recursos, el archivo INF que instala el controlador debe incluir la siguiente directiva en la sección DDInstall específica de WDF:

UmdfDirectHardwareAccess = AllowDirectHardwareAccess Para obtener más información sobre esta directiva, vea Especificar directivas WDF en archivos INF. Para obtener un ejemplo de un archivo INX (usado para compilar el archivo INF correspondiente) que usa esta directiva, consulte el ejemplo de controlador SpbAccelerometer .

El identificador de conexión que recibe el controlador como recurso es un entero de 64 bits, pero el controlador debe incorporar este identificador en un nombre de ruta de acceso del dispositivo que se puede usar para recuperar los parámetros de conexión del centro de recursos. Para crear el nombre de la ruta de acceso del dispositivo, el controlador llama a la función RESOURCE_HUB_CREATE_PATH_FROM_ID , que se declara en el archivo de encabezado Reshub.h.

Para abrir una conexión lógica al dispositivo periférico conectado a SPB, un controlador UMDF llama al método IWDFRemoteTarget::OpenFileByName y un controlador KMDF llama al método WdfIoTargetOpen . Cualquiera de los métodos requiere el nombre de la ruta de acceso del dispositivo como parámetro de entrada.

Para obtener ejemplos de código de UMDF y KMDF que usan identificadores de conexión para abrir conexiones lógicas a dispositivos periféricos conectados a SPB, consulte los temas siguientes:

Los recursos de hardware para User-Mode controladores periféricos spbrecursos de hardware para Kernel-Mode las aplicaciones del modo de usuario de los controladores periféricos de SPB no pueden abrir conexiones lógicas a dispositivos periféricos conectados a SPB y no pueden enviar solicitudes de E/S directamente a estos dispositivos.

Solo un controlador puede contener una conexión lógica abierta a un dispositivo periférico conectado a SPB a la vez. Se produce un error en un intento por otro controlador para abrir una segunda conexión con el mismo dispositivo.