Compartir a través de


Recursos de hardware

Los recursos de hardware son las rutas de acceso de bus asignables y direccionables que permiten que los dispositivos periféricos y los procesadores del sistema se comuniquen entre sí. Los recursos de hardware suelen incluir direcciones de puerto de E/S, vectores de interrupción y bloques de direcciones de memoria relativas al bus.

Para que el sistema pueda comunicarse con una instancia de dispositivo, el administrador de PnP debe asignar recursos de hardware a la instancia de dispositivo en función del conocimiento de qué recursos están disponibles y cuáles es capaz de usar la instancia del dispositivo. Los recursos se asignan a cada nodo de dispositivo del árbol de dispositivos (suponiendo que el dispositivo representado necesita recursos y esos recursos están disponibles). El administrador de PnP realiza un seguimiento de los recursos de hardware mediante listas, que asocia a nodos de dispositivo. Usa dos tipos de listas:

Lista de requisitos de recursos
Normalmente, los dispositivos están diseñados para funcionar dentro de intervalos de asignaciones de recursos. Por ejemplo, un dispositivo podría requerir solo un vector de interrupción, pero podría usar cualquiera de un intervalo de vectores. Para cada instancia de dispositivo, el administrador de PnP mantiene una lista de requisitos de recursos que especifica todos los intervalos de recursos de hardware en los que el dispositivo puede funcionar. El nombre de la lista se deriva del hecho de que el administrador de PnP debe elegir los recursos de esta lista cuando los asigna al dispositivo.

El código en modo kernel especifica las listas de requisitos de recursos mediante estructuras de IO_RESOURCE_REQUIREMENTS_LIST (ya sea como entrada para rutinas del sistema o en respuesta a los IRP). El código en modo de usuario especifica las listas de requisitos de recursos que usan estructuras del administrador de configuración de PnP como entrada para las funciones del administrador de configuración de PnP.

Lista de recursos
Cuando el administrador de PnP asigna recursos a un dispositivo, realiza un seguimiento de estas asignaciones mediante la creación de una lista de recursos asignados para cada instancia de dispositivo. Estas listas se pueden denominar listas de asignación de recursos, pero ese nombre se suele abreviar a las listas de recursos. El administrador de PnP puede cambiar el contenido de la lista de recursos a medida que los dispositivos se agregan o quitan de un sistema y los recursos se reasignan posteriormente. (Los recursos también se pueden asignar mediante un BIOS de PnP. Además, el software de instalación ( mediante archivos INF o entrada de usuario) puede forzar al administrador de PnP a asignar recursos específicos a un dispositivo).

El código en modo kernel especifica listas de recursos mediante estructuras de CM_RESOURCE_LIST (ya sea como entrada para rutinas del sistema o en respuesta a IRP). El código en modo de usuario especifica listas de recursos que usan estructuras del administrador de configuración de PnP como entrada para las funciones del administrador de configuración de PnP.

El administrador de PnP almacena listas de requisitos de recursos y listas de recursos en el registro, donde se pueden ver mediante Regedit.exe. Los controladores pueden acceder a estas listas indirectamente a través de rutinas Plug and Play e IRP menores Plug and Play. Las aplicaciones en modo de usuario pueden usar funciones del administrador de configuración de PnP. (Los controladores y las aplicaciones no deben acceder directamente a estas listas mediante funciones del Registro porque el formato de almacenamiento está sujeto a cambios en una versión futura).

Configuraciones lógicas

Las listas de requisitos de recursos y las listas de recursos contienen una o varias configuraciones lógicas. Cada configuración lógica identifica un intervalo de recursos aceptables o un conjunto de recursos específicos para una instancia de dispositivo específica. Además, cada configuración lógica de una instancia de dispositivo pertenece a uno de los tipos de configuración lógica. Los tipos de configuración se enumeran a continuación. Se pueden asignar varias configuraciones lógicas, de los mismos o diferentes tipos, a cada instancia de dispositivo.

Tipos de configuración lógica para listas de requisitos de recursos

Configuración básica
Lista de requisitos de recursos que identifica los intervalos de recursos proporcionados por un dispositivo Plug and Play. Un controlador debe devolver esta lista cuando recibe el IRP IRP_MN_QUERY_RESOURCE_REQUIREMENTS. (La configuración básica de un dispositivo que no es PnP se puede describir en un archivo INF. En este caso, el software de instalación de dispositivos lee el archivo INF y llama a las funciones del administrador de configuración de PnP para crear una lista de requisitos).

Configuración filtrada
Una lista de requisitos de recursos que se ha proporcionado a una pila de controladores, posiblemente modificada y, a continuación, devuelta por la pila de controladores, en respuesta a la IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. El administrador de PnP usa la configuración filtrada resultante como base para asignar recursos.

Invalidar la configuración
Lista de requisitos de recursos que invalida las configuraciones básicas. Normalmente, un instalador de dispositivos crea una configuración de anulación si el archivo INF del dispositivo incluye una sección INF DDInstall.LogConfigOverride. No se elimina una configuración de anulación si se quita físicamente su dispositivo del sistema.

Tipos de configuración lógica para listas de recursos

Configuración de arranque
Lista de recursos que identifica los recursos asignados a una instancia de dispositivo cuando se arranca el sistema. (En el caso de los dispositivos PnP, esta es la configuración proporcionada por el BIOS; para los dispositivos que no son PnP, estos recursos pueden seleccionarse mediante jumpers en la tarjeta). Un controlador debe devolver esta lista de recursos cuando recibe la IRP_MN_QUERY_RESOURCES IRP. (Una configuración de arranque puede estar parcialmente vacía si el BIOS no puede determinar todos los recursos usados por un dispositivo). El administrador de PnP puede modificar esta lista si se quita o se reinicia un dispositivo. En el caso de los dispositivos que no son PnP, este tipo de configuración se puede usar en lugar de una configuración forzada, en cuyo caso tiene una prioridad de configuración menor que una configuración forzada equivalente. Solo puede existir una configuración de arranque para cada instancia de dispositivo.

Configuración forzada
Lista de recursos que identifica los recursos que debe usar una instancia de dispositivo. Una configuración forzada impide que el administrador de PnP asigne otros recursos a la instancia del dispositivo. Un instalador de dispositivo puede crear una configuración forzada basada en la información contenida en un INF o recibida de un usuario. No se elimina una configuración forzada si el dispositivo se retira físicamente del sistema. Solo puede existir una configuración forzada para cada instancia de dispositivo.

Configuración asignada
Una lista de recursos que identifica los recursos actualmente en uso por una instancia de dispositivo. Solo puede existir una configuración asignada para cada instancia de dispositivo.

Los controladores de dispositivo son responsables de determinar la configuración básica del dispositivo compatible con PnP, la configuración filtrada y la configuración de arranque, y para devolver esa información en respuesta a los IRP enviados por el administrador de PnP. (Para obtener más información, vea Agregar un dispositivo PnP a un sistema en ejecución). El software de instalación de controladores puede crear configuraciones de invalidación, configuraciones forzadas y, para dispositivos que no son PnP, configuraciones de arranque. El administrador de PnP mantiene la configuración asignada de cada instancia de dispositivo.

Se asigna una prioridad a cada configuración cuando se crea. Si el administrador de PnP encuentra que a una instancia de dispositivo se le han asignado varias configuraciones lógicas del mismo tipo, intenta usar la que tiene la prioridad más alta en primer lugar. Si esa configuración da lugar a conflictos de recursos, intenta la configuración con la siguiente prioridad más baja. (Para obtener una lista de prioridades de configuración, consulte CM_Add_Empty_Log_Conf).