Sección ClassInstall32 de INF
Precaución
Si va a crear un paquete de controladores universal o de Windows, esta sección no es válida. Consulte Uso de un archivo INF universal e Introducción al desarrollo de controladores de Windows.
Una sección ClassInstall32 instala una nueva clase de configuración de dispositivos para los dispositivos de la nueva clase.
[ClassInstall32] |
[ClassInstall32.nt] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
AddReg=add-registry-section[,add-registry-section]...
[AddProperty=add-property-section[,add-property-section] ...] (Windows Vista and later versions of Windows)
[Copyfiles=@filename | file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-section]...]
[DelProperty=del-property-section[,del-property-section] ...] (Windows Vista and later versions of Windows)
[Delfiles=file-list-section[,file-list-section]...]
[Renfiles=file-list-section[,file-list-section]...]
[BitReg=bit-registry-section[,bit-registry-section]...]
[UpdateInis=update-ini-section[,update-ini-section]...]
[UpdateIniFields=update-inifields-section[,update-inifields-section]...]
[Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...]
Entries
AddReg=add-registry-section[,add-registry-section]...
Hace referencia a una o varias secciones con nombre que contienen entradas de valor específicas de clase que se van a escribir en el registro. Normalmente, se usa para asignar al menos un nombre descriptivo a la nueva clase de configuración de dispositivos que otros componentes pueden recuperar más adelante del registro y usar para abrir dispositivos instalados de esta nueva clase de dispositivo o para "instalar" cualquier proveedor de páginas de propiedades para esta clase de configuración de dispositivo, etc.
Una especificación HKR en cualquier add-registry-section designa la clave del registro que contiene la configuración de esa clase. Para obtener más información, consulte la siguiente sección de Observaciones.
Para obtener más información, consulte Directiva AddReg de INF.
AddProperty=add-property-section[,add-property-section]...
(Windows Vista y versiones posteriores de Windows) Hace referencia a una o varias secciones de archivos INF que modifican las propiedades del dispositivo que se establecen para una clase de configuración de dispositivo. Debe usar una directiva AddProperty de INF solo para establecer una propiedad de clase de instalación de dispositivo que sea nueva en Windows Vista o versiones posteriores de los sistemas operativos Windows.
Para las propiedades de clase de dispositivo que se introdujeron anteriormente en Windows Server 2003, Windows XP o Windows 2000, y que tienen los valores de entrada del registro correspondientes, debe seguir usando directivas AddReg de INF para establecer la propiedad de clase de instalación de dispositivos. Estas directrices se aplican a las propiedades definidas por el sistema y a las propiedades personalizadas.
Para obtener más información sobre cómo usar la directiva AddProperty,consulte Uso de la directiva AddProperty de INF y la directiva DelProperty de INF.
Copyfiles=@filename | file-list-section[,file-list-section]...
Especifica un archivo con nombre que se va a copiar del medio de origen al destino o hace referencia a una o varias secciones con nombre en las que se especifican archivos relevantes para la clase en el medio de origen para la transferencia al destino. La entrada DefaultDestDir de la sección DestinationDirs del INF especifica el directorio de destino de cualquier archivo único específico de clase que se va a copiar.
Para obtener más información, consulte Directiva CopyFiles de INF.
Nota:
Los archivos INF proporcionados por el sistema para las clases de instalación de dispositivos no usan esta directiva en esta sección.
DelReg=del-registry-section[,del-registry-section]...
Hace referencia a una o varias secciones con nombre en las que se especifican entradas o claves de valor que se van a quitar del registro durante la instalación del instalador de clase.
Sin embargo, si ya existe un {SetupClassGUID} determinado como una clase instalada, el código de instalación del sistema omite posteriormente la sección ClassInstall32 de cualquier INF que especifique el mismo valor de GUID en su sección Version. Por lo tanto, un INF no puede reemplazar un instalador de clase existente ni modificar su comportamiento desde una sección ClassInstall32.
Para obtener más información, consulte Directiva DelReg de INF.
DelProperty=del-property-section[,del-property-section]...
(Windows Vista y versiones posteriores de Windows) Hace referencia a una o varias secciones de archivos INF que eliminan las propiedades del dispositivo que se establecen para una clase de configuración de dispositivo. Debe usar una directiva DelProperty de INF solo para eliminar una propiedad de clase de instalación de dispositivo que sea nueva en Windows Vista o versiones posteriores de los sistemas operativos Windows.
Para las propiedades de clase de dispositivo que se introdujeron anteriormente en Windows Server 2003, Windows XP o Windows 2000, y que tienen los valores de entrada del registro correspondientes, debe seguir usando directivas DelReg de INF para eliminar la propiedad de clase de instalación de dispositivos. Estas directrices se aplican a las propiedades definidas por el sistema y a las propiedades personalizadas.
Para obtener más información sobre cómo usar la directiva DelProperty,consulte Uso de la directiva AddProperty de INF y la directiva DelProperty de INF.
Delfiles=file-list-section[,file-list-section]...
Hace referencia a una o varias secciones con nombre en las que se especifican los archivos pertinentes para la clase instalados anteriormente en el destino para su eliminación.
Para obtener más información, consulte Directiva DelFiles de INF.
Renfiles=file-list-section[,file-list-section]...
Hace referencia a una o varias secciones con nombre en las que aparecen los archivos pertinentes para la clase que se van a cambiar de nombre en el destino.
Para obtener más información, consulte Directiva RenFiles de INF.
BitReg=bit-registry-section[,bit-registry-section]...
Es válido en esta sección, pero casi nunca se usa.
Para obtener más información, consulte Directiva BitReg de INF.
UpdateInis=update-ini-section[,update-ini-section]...
Es válido en esta sección, pero casi nunca se usa.
Para obtener más información, consulte Directiva UpdateInis de INF.
UpdateIniFields=update-inifields-section[,update-inifields-section]...
Es válido en esta sección, pero casi nunca se usa.
Para obtener más información, consulte Directiva UpdateIniFields de INF.
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
Es válido en esta sección, pero casi nunca se usa.
Para obtener más información, consulte Directiva UpdateIniFields de INF.
Comentarios
Debe incluir una sección ClassInstall32 en un archivo INF de dispositivo solo para instalar una nueva clase de configuración de dispositivo personalizada. Los archivos INF para dispositivos de una clase instalada, ya sea una clase de instalación de dispositivos proporcionada por el sistema o una clase personalizada, no deben incluir una sección ClassInstall32. Dado que el sistema procesa una sección ClassInstall32 solo si una clase aún no está instalada, no puede usar una sección ClassInstall32 para volver a instalar o cambiar la configuración de una clase que ya está instalada. En concreto, no se puede usar una sección ClassInstall32 para agregar un coinstalador de clase o un controlador de filtro de clase para una clase que ya está instalada. Para obtener información sobre cómo instalar coinstaladores y controladores de filtro, consulte Escritura de un coinstalador e Instalación de un controlador de filtro.
Normalmente, una sección ClassInstall32 tiene una o varias directivas AddReg para agregar entradas en una subclave SetupClassGUID proporcionada por el sistema en el registro. Estas entradas pueden incluir una ruta de acceso descriptiva al instalador de clase específica de la clase, un icono de clase, un proveedor de páginas de propiedades, etc.
Excepto AddReg y CopyFiles, las demás directivas que se muestran aquí raramente se usan en una sección ClassInstall32.
Para admitir una distribución multiplataforma de archivos de controlador, construya secciones ClassInstall32 específicas de la plataforma. Por ejemplo, todas las funciones SetupAPI del sistema que procesan una sección ClassInstall32 buscarán primero una sección ClassInstall32.ntx86 en una plataforma x86 y solo analizarán una sección ClassInstall32 no representativa si no encuentran una sección ClassInstall32.ntx86. Para obtener más información sobre cómo usar las extensiones .nt, .ntx86, .ntia64, .ntamd64, .ntarm y .ntarm64 definidas por el sistema, consulte Creación de archivos INF para varias plataformas y sistemas operativos.
Nota:
El nombre de la sección ClassInstall32 también se usa para las instalaciones en plataformas de 64 bits.
A partir de Windows 2000, todos los dispositivos instalados están asociados a una clase de configuración de dispositivo. Si el INF de un dispositivo que se va a instalar no está asociado a un nuevo instalador de clase de dispositivo, o si su especificación ClassGUID= en la sección Version no coincide con un GUID de clase de instalación definido por el sistema, ese dispositivo está asociado a la clase de instalación de dispositivos con el nombre "Desconocido".
El INF para cualquier instalador de clase de dispositivo normalmente tiene una directiva AddReg en su sección ClassInstall32 para definir al menos una sección con nombre que crea un nombre descriptivo para su tipo de dispositivo. El código de instalación crea automáticamente una clave SetupClassGUID en el lugar adecuado del registro a partir del valor proporcionado para la entrada ClassGUID= en la sección Version del INF cuando se instala el primer dispositivo de esa clase de instalación (nueva).
El INF puede usar las secciones add-registry a las que se hace referencia en su sección ClassInstall32 para especificar un proveedor de páginas de propiedades y ejercer el control sobre cómo se controla su clase de dispositivos en la interfaz de usuario.
Esta sección add-registry específica de clase tiene el siguiente formato general:
[SetupClassAddReg]
HKR,,,,%DevClassName% ; device-class friendly name
[HKR,,Installer32,,"class-installer.dll,class-entry-point"]
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
HKR,,Icon,,"icon-number"
[HKR,,SilentInstall,,1]
[HKR,,NoInstallClass,,1]
[HKR,,NoDisplayClass,,1]
El sistema usa el icono especificado para representar el instalador al usuario.
- Si el valor de icono es positivo, representa un identificador de recurso para un recurso. El recurso se extrae del archivo DLL del instalador de clase, si se especifica la clave Installer32 o desde el archivo DLL de la página de propiedades, si se especifica la clave EnumPropPages32. El valor "0" representa el primer icono del archivo DLL. El valor "1" está reservado.
- Si el valor de icono es negativo, el valor absoluto es el identificador de recurso del icono en SetupApi.DLL.
Establecer las entradas de valor booleano SilentInstall, NoDisplayClass y NoInstallClass predefinidas en una clave del registro específica de clase tiene los siguientes efectos:
Al establecer SilentInstall, los instaladores no envían mensajes emergentes al usuario que requieren una respuesta durante la instalación de dispositivos de esta clase, independientemente de si se especifican en las secciones DDInstall del archivo INF del instalador de clase o en archivos INF independientes para dispositivos instalados posteriormente que se declaran a sí mismos de esta clase estableciendo la misma especificación ClassGuid={ClassGUID} en sus respectivas secciones Version. Por ejemplo, los instaladores de clase del sistema de dispositivos CD-ROM y de disco y el instalador de clase de puerto paralelo del sistema establecen SilentInstall en sus respectivas claves del registro.
Si un instalador específico de clase requiere que el equipo se reinicie para cualquier dispositivo que instale, la sección del registro de complementos específico de la clase en su INF no puede tener esta entrada de valor.
Al establecer NoDisplayClass, se suprime la visualización visible del usuario de todos los dispositivos de esta clase Administrador de dispositivos. Por ejemplo, los instaladores de clase del sistema para impresoras y para controladores de red (incluidos clientes, servicios y protocolos) establecen NoDisplayClass en sus respectivas claves del registro.
Establecer NoInstallClass indica que ningún dispositivo de este tipo nunca requerirá la instalación manual por parte de un usuario final. Por ejemplo, los instaladores de clase del sistema para dispositivos Plug and Play (PnP) establecen NoInstallClass en sus respectivas claves del registro.
Una sección ClassInstall32 puede contener directivas AddReg para establecer DeviceType, DeviceCharacteristics y Security para los dispositivos de su clase de instalación. Para obtener más información, consulte Directiva AddReg de INF.
Ejemplos
En este ejemplo se muestra la sección ClassInstall32, junto con la sección con nombre a la que hace referencia con la directiva AddReg.
[ClassInstall32]
AddReg=example_class_addreg
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,Icon,,"-1"
Por el contrario, en este ejemplo se configura un proveedor de páginas de propiedades específico de clase. Este INF también establece las entradas del valor de SilentInstall y NoInstallClass de la clave de clase en TRUE (1).
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,EnumPropPages32,,"ExampleBinary.Dll,ExamplePropPageProvider"
HKR,,SilentInstall,,1
HKR,,NoInstallClass,,1
HKR,,Icon,,"101"