Cómo determina Windows el controlador de dispositivo más adecuado durante la instalación

Seleccione idioma Seleccione idioma
Id. de artículo: 279112 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En este artículo se describe el proceso que se usa para seleccionar el controlador de dispositivo más adecuado durante una instalación.

Al ejecutar el programa de instalación de Windows, puede que tenga más de un conjunto de controladores de dispositivo o archivos .inf válidos para un dispositivo en particular. Tanto el programa de instalación como Plug and Play intentan resolver estos conflictos seleccionando el controlador de dispositivo más adecuado para el dispositivo que se esté instalando.

NOTA
En este artículo sólo se describe el proceso utilizado para los dispositivos que se instalan durante la fase de interfaz gráfica de usuario (GUI, Graphical User Interface) del programa de instalación o una vez finalizado éste. Los procesos de detección de controladoras de almacenamiento masivo y selección de controladores de dispositivo que se llevan a cabo en la parte de modo de texto del programa de instalación son diferentes.

Más información

Para obtener más información acerca del proceso de detección de controladoras de dispositivos de almacenamientoo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
220845 Agregar un controlador actualizado o de terceros durante la instalación de Windows

Plug and Play intenta localizar un controlador de dispositivo compatible comparando los identificadores (Id.) Plug and Play del hardware (devueltos por el firmware del dispositivo o el BIOS del sistema en el momento de enumerar el dispositivo) con cualquier identificador Plug and Play que coincida y se encuentre en los archivos .inf.

Plug and Play puede buscar en todos los archivos .inf el controlador de dispositivo más adecuado para instalar un dispositivo en particular. Plug and Play no detiene la búsqueda en la primera correspondencia que encuentra. Continúa buscando en todos los archivos .inf que aparezcan en la ruta de búsqueda de Plug and Play, tal como se define en la siguiente entrada del Registro:
HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
DevicePath:Reg_Expand_SZ:%Systemroot%\Inf

NOTA
De forma predeterminada, la ubicación anterior del Registro sólo contiene esta entrada, sin embargo pueden anexarse a ella varias rutas cuando se realiza una instalación desatendida y se usa el parámetro OemPnpDriversPath = en el archivo de respuesta de instalación desatendida.

El programa de instalación crea una lista de los controladores de dispositivo compatibles que contenían una correspondencia en los archivos .inf y asigna una "clasificación" a cada una. La clasificación es un valor comprendido entre "0" y "0xFFFF", donde 0 es la correspondencia más adecuada posible y 0xFFFF es la peor. El controlador de dispositivo con la clasificación menor se considera la correspondencia más adecuada posible y el controlador de dispositivo se instala.

Las clasificaciones de controladores de dispositivo se engloban en los intervalos siguientes:
  • De 0x0 a 0xfff: el identificador de hardware de dispositivo se correspondía con el identificador de hardware enumerado en un archivo .inf.
  • De 0x1000 a 0x1fff: el identificador de hardware de dispositivo se correspondía con uno de los identificadores compatibles de un archivo .inf.
  • De 0x2000 a 0x2fff: uno de los identificadores de dispositivo compatibles se correspondía con el identificador de hardware de un archivo .inf.
  • De 0x3000 a 0x3fff: uno de los identificadores de dispositivo compatibles se correspondía con el identificador compatible de un archivo .inf.
  • 0xFFFF: es la peor correspondencia.
En Windows XP y Windows Server 2003, hay más intervalos para la clasificación de controladores de dispositivo:
  • De 0x8000 a 0x8FFF: correspondencias con identificadores de hardware que no son de confianza
  • De 0x9000 a 0x9FFF: correspondencias con identificadores compatibles que no son de confianza
Algunos archivos .inf pueden clasificarse en el intervalo de identificadores que no son de confianza si no se han firmado digitalmente o si el nombre de sección Modelo no contiene elementos concretos de Windows NT (el dispositivo puede instalarse en Windows NT, Windows 95 o Windows 98, pero no tiene entradas específicas de estos sistemas operativos).

Si el programa de instalación determina que el controlador de dispositivo no es de confianza, puede cambiar su clasificación dentro de los intervalos anteriores apropiados.
Los controladores de dispositivo cuya clasificación se encuentre en el intervalo de 0x0 a 0xfff se denominan "correspondencias de identificador de hardware" porque hacen corresponder identificadores de hardware. Estas clasificaciones también se consideran las correspondencias más adecuadas y cualquier otra se enumera como "compatible" porque hay al menos un identificador compatible en la clasificación del controlador de dispositivo. Los instaladores y coinstaladores de clases también pueden afectar a la selección del controlador de dispositivo marcándolo como "no válido" si el instalador determina que no es adecuado para el dispositivo o si cambia su clasificación.

Sin embargo, si dos controladores de dispositivo tienen la misma clasificación más baja, el programa de instalación usa aquél cuya fecha sea más reciente. Si uno de los controladores de dispositivo está firmado y el otro sin firmar, al último se le asigna una fecha igual a 0xFFFFFFFF y se selecciona e instala el firmado.

Puede suministrarse un controlador proporcionado por el OEM pero es posible que no se seleccione ni se utilice. Incluso aunque un fabricante haya suministrado un controlador de dispositivo actualizado, puede que sólo se haya grabado como controlador de dispositivo compatible al que pueda asignarse un número de clasificación superior y que, por lo tanto, no sea el más adecuado. Al seleccionar una correspondencia, el programa de instalación no tiene en cuenta si el controlador de dispositivo suministrado por el OEM está firmado digitalmente. Si el controlador de dispositivo sin firmar se clasifica con un valor menor y su correspondencia es mejor que la de cualquier otro controlador integrado, el programa de instalación puede seleccionarlo e instalarlo.

Al ejecutar el programa de instalación, si no se encuentra ninguna correspondencia en ningún archivo .inf, la instalación del dispositivo se pospone y éste puede clasificarse como desconocido en el Administrador de dispositivos. Si se introduce un dispositivo nuevo (no durante la ejecución del programa de instalación) y no se encuentra una correspondencia en ninguno de los archivos .inf del equipo, puede aparecer un mensaje "Nuevo hardware encontrado" y se le puede pedir que suministre un controlador de dispositivo.

Por ejemplo, suponga que tiene un equipo con un adaptador de vídeo PCI y un identificador Plug and Play que aparece en dos archivos .inf diferentes, Nv3_disp.inf y Nv4_disp.inf. Ninguno de estos archivos de controlador de dispositivo está firmado digitalmente, por lo que se les asigna la fecha 0xFFFFFFFF. En este ejemplo, estos archivos se encuentran en las carpetas D:\Drivers\Video1 y D:\Drivers\Video2.

La clave Devicepath= del Registro tiene las entradas %Systemroot%\Inf;%Systemdrive%\Drivers\Video1;%Systemdrive%\Drivers\Video2.

NOTA
%Systemroot% es D:\Winnt y %Systemdrive% es D:.

Tanto el programa de instalación como Plug and Play buscan en todos los archivos .inf que se encuentren en las rutas de acceso anteriores y registran las correspondencias que hallan. Si hallan más de una, se utiliza la más adecuada.

En el extracto siguiente del archivo Setupapi.log se detalla el proceso anterior. Para este ejemplo, el modo de registro del programa de instalación se ha establecido en detallado con la información del artículo siguiente (en inglés):
243996 Cómo habilitar el registro detallado en la instalación en modo GUI de Windows 2000

Si el programa de instalación se ejecuta con normalidad, no se observan muchos detalles en el archivo Setupapi.log.

Cuando se consulta un dispositivo, éste devuelve una lista de identificadores de hardware e identificadores compatibles. No se devuelven varios identificadores para todos los dispositivos, aunque sí para la mayor parte. En este ejemplo, una tarjeta de vídeo devuelve los identificadores siguientes:
Searching for hardware IDs: Pci\Ven_10de&dev_0028&subsys_5a001092&rev_11, Pci\Ven_10de&dev_0028&subsys_5a001092, Pci\Ven_10de&dev_0028&cc_030000, Pci\Ven_10de&dev_0028&cc_0300 Searching for compatible IDs: Pci\Ven_10de&dev_0028&rev_11, Pci\Ven_10de&dev_0028, Pci\Ven_10de&cc_030000, Pci\Ven_10de&cc_0300, Pci\Ven_10de,pci\cc_030000, Pci\Cc_0300 Enumerating files D:\Winnt\Inf\*.inf @ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\1394.inf". @ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\accessor.inf". @ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\acpi.inf". @ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_mult.inf". @ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_port.inf". @ 07:11:59.207 : Opened PNF of "D:\Winnt\Inf\agtinst.inf". . . . Enumerating files D:\Drivers\Video1\*.inf @ 07:12:00.660 : Opened PNF of "D:\Drivers\Video1\NV4_DISP.inf". @ 07:12:00.660 : The file (D:\Drivers\Video1\NV4_DISP.inf) is not digitally signed, ignoring driver date. @ 07:12:00.660 :Found Pci\VEN_10DE&DEV_0028 in D:\Drivers\Video1\NV4_DISP.inf; Device: NVIDIA RIVA TNT2; Driver: NVIDIA RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Section: nv4 @ 07:12:00.660 : Decorated section name: nv4 Enumerating files D:\Drivers\Video2\*.inf @ 07:12:00.660 : Opened PNF of "D:\Drivers\Video2\NV3_DISP.inf". @ 07:12:00.675 : The file (D:\Drivers\Video2\NV3_DISP.inf) is not digitally signed, ignoring driver date. @ 07:12:00.675 : Found PCI\VEN_10DE&DEV_0028 in D:\Drivers\Video2\NV3_DISP.inf; Device: NVIDIA RIVA TNT2; Driver: NVIDIA RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Section: nv4 @ 07:12:00.675 : Decorated section name: nv4 @ 07:12:01.706 : Device install function: DIF_SELECTBESTCOMPATDRV. @ 07:12:01.706 : Executing class installer. @ 07:12:01.894 : Completed class installer. @ 07:12:01.894 : Executing default installer. @ 07:12:01.894 : Selected driver installs from section nv4 in D:\Drivers\Video1\Nv4_disp.inf. @ 07:12:01.894 : Changed class GUID of device to {4D36E968-E325-11CE-BFC1-08002BE10318}. @ 07:12:01.894 : Set selected driver. @ 07:12:01.894 : Selected best compatible driver. @ 07:12:01.894 : Completed default installer. @ 07:12:06.565 : Device install function: DIF_ALLOW_INSTALL. @ 07:12:06.565 : Executing class installer. @ 07:12:06.565 : Completed class installer. @ 07:12:06.581 : Device install function: DIF_INSTALLDEVICEFILES. @ 07:12:06.581 : Executing class installer. @ 07:12:06.581 : Completed class installer. @ 07:12:06.581 : Executing default installer.
				
En el resultado del ejemplo, el programa de instalación seleccionó e instaló el controlador de dispositivo con el archivo D:\Drivers\Video1\Nv4_disp.inf porque encontró que ese controlador era el más adecuado.

Para hallar fácilmente los dispositivos instalados y los archivos .inf utilizados para instalar un dispositivo, abra el archivo %Systemroot%\Setupapi.log en el Bloc de notas de Windows y busque DIF_SelectBestCompatDrv para los dispositivos instalados mediante Plug and Play o DIF_SelectDevice en el caso de los dispositivos instalados manualmente.

Propiedades

Id. de artículo: 279112 - Última revisión: martes, 26 de diciembre de 2006 - Versión: 6.4
La información de este artículo se refiere a:
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
Palabras clave: 
kbenv kbinfo kbsetup KB279112

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com