Directiva BitReg de INF
Precaución
A partir de Windows 11 versión 22H2, un paquete de controladores que usa esta directiva ya no es apto para una firma del Centro para desarrolladores de hardware.
Los paquetes de controladores universales y los controladores de Windows no pueden usar esta directiva.
Una directiva BitReg hace referencia a una o varias secciones INF-writer-defined que se usan para establecer o borrar bits dentro de una entrada de valor de tipo REG_BINARY existente en el registro. Sin embargo, esta directiva rara vez se usa en los archivos INF del dispositivo o controlador.
[DDInstall] |
[DDInstall.HW] |
[DDInstall.CoInstallers] |
[ClassInstall32] |
[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)
BitReg=bit-registry-section[,bit-registry-section]...
Se puede especificar una directiva BitReg en cualquiera de las secciones que se muestran en la instrucción de sintaxis formal anterior. Esta directiva también se puede especificar en cualquiera de las siguientes secciones INF-writer-defined:
- Una sección service-install-section o event-log-install a la que hace referencia la directiva AddService en una sección INF DDInstall.Services.
- Una add-interface-section a la que hace referencia la directiva AddInterface en una sección DDInstall.Interfaces.
- Una install-interface-section a la que se hace referencia en una sección InterfaceInstall32.
Cada sección con nombre a la que hace referencia una directiva BitReg tiene el siguiente formato:
[bit-registry-section]
reg-root, [subkey], value-entry-name, [flags], byte-mask, byte-to-modify
reg-root, [subkey], value-entry-name, [flags], byte-mask, byte-to-modify
...
Una bit-registry-section puede tener cualquier número de entradas, cada una en una línea independiente.
Entries
reg-root
Identifica la raíz del árbol del registro para otros valores proporcionados en esta entrada. El valor puede ser uno de los siguientes:
HKCR
Abreviatura de HKEY_CLASSES_ROOT.
HKCU
Abreviatura de HKEY_CURRENT_USER.
HKLM
Abreviatura de HKEY_LOCAL_MACHINE.
HKU
Abreviatura de HKEY_USERS.
HKR
Raíz relativa, en la que las claves especificadas mediante esta abreviatura son relativas a la clave del registro asociada a la sección INF en la que aparece esta directiva BitReg, como se indica en la tabla siguiente.
Sección INF que contiene la directiva BitReg | Clave del registro a la que hace referencia HKR |
---|---|
Sección DDInstall de INF | Clave de software del dispositivo |
Sección DDInstall.HW de INF | Clave de hardware del dispositivo |
Sección DDInstall.Services de INF | Clave de servicios |
Nota:
HKR no se puede usar en una bit-registry-section a la que se hace referencia en una sección DefaultInstall de INF.
Para obtener más información sobre la información del controlador almacenada en la raíz de HKEY_LOCAL_MACHINE, consulte Árboles y claves del registro para dispositivos y controladores.
subkey
Este valor opcional, expresado como un token %strkey% definido en una sección Strings del INF o como una ruta de acceso del registro bajo la reg-root (key1\key2\key3...) indicada especifica la clave que contiene la entrada de valor que se va a modificar.
value-entry-name
Especifica el nombre de una entrada de valor de tipo REG_BINARY existente en la subclave (existente) que se va a modificar. Se puede expresar como una "cadena entre comillas" o como un token %strkey% que se define en la sección Strings del INF.
flags
Este valor hexadecimal opcional, expresado como máscara de bits ORed de valores de marca de palabra de orden inferior y superior definidos por el sistema, especifica si se van a borrar o establecer los bits especificados en la máscara de bytes especificada. Su valor predeterminado es cero, lo que borra los bits de la sección de 64 bits del registro.
Los valores de máscara de bits para cada una de estas marcas son los siguientes:
0x00000000 (FLG_BITREG_CLEARBITS)
Borra los bits especificados por byte-mask.
0x00000001 (FLG_BITREG_SETBITS)
Establece los bits especificados por byte-mask.
0x00004000 (FLG_BITREG_32BITKEY) (Windows XP y versiones posteriores de Windows).
Realiza el cambio especificado en el registro de 32 bits. Si no se especifica, el cambio se realiza en el registro nativo.
byte-mask
Esta máscara de tamaño de byte, expresada en notación hexadecimal, especifica qué bits se van a borrar o establecer con el valor actual del value-entry-name indicado.
byte-to-modify
Este valor de tamaño de bytes, expresado en decimal, especifica el índice de base cero del byte dentro del valor de tipo REG_BINARY que se va a modificar.
Comentarios
Cada nombre de bit-registry-section debe ser único para el archivo INF, pero las directivas BitReg pueden hacer referencia a ellos en otras secciones del mismo INF. Cada nombre de sección INF-writer-created debe ser único dentro del archivo INF y debe seguir las reglas generales para definir nombres de sección. Para obtener más información sobre estas reglas, consulte Reglas generales de sintaxis para archivos INF.
El valor de una entrada de valor de tipo REG_BINARY existente también se puede modificar mediante la sobrescritura de su valor actual dentro de una sección add-registry en otra parte del archivo INF. Para obtener más información sobre las secciones add-registry, consulte la referencia de la directiva AddReg.
El uso de una directiva BitReg requiere la definición de otra sección del archivo INF. Sin embargo, el valor de una entrada de valor de tipo REG_BINARY existente se puede modificar bit a bit en dicha sección, conservando así los valores de todos los bits restantes.
Ejemplos
En el ejemplo siguiente se muestra una sección bit-registry para una aplicación ficticia.
[AppX_BitReg]
; set first bit of byte 0 in ProgramData value entry
HKLM,Software\AppX,ProgramData,1,0x01,0
; preceding would change value 30,00,10 to 31,00,10
; clear high bit of byte 2 in ProgramData value entry
HKLM,Software\AppX,ProgramData,,0x80,2
; preceding would change value 30,00,f0 to 30,00,70
; set second and third bits of byte 1 in ProgramData value entry
HKLM,Software\AppX,ProgramData,1,0x06,1
; preceding would change value 30,00,f0 to 30,06,f0