Директива INF BitReg
Внимание!
Начиная с Windows 11 версии 22H2 пакет драйвера, использующий эту директиву, больше не может быть сигнатурой из Центра разработчиков оборудования.
Универсальные пакеты драйверов и драйверы Windows не могут использовать эту директиву.
Директива BitReg ссылается на один или несколько разделов, определяемых inf-writer, которые используются для задания или очистки битов в существующей записи типа REG_BINARY в реестре. Однако эта директива редко используется в INF-файлах устройства или драйвера.
[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]...
Директиву BitReg можно указать в любом из разделов, показанных в описанной выше формальной инструкции синтаксиса. Эту директиву также можно указать в любом из следующих разделов, определенных для записи INF:
- Раздел service-install-section или event-log-install , на который ссылается директива AddService в разделе DDInstall.Services.
- Раздел add-interface, на который ссылается директива AddInterface в DDInstall. Раздел "Интерфейсы".
- Раздел install-interface, на который ссылается раздел InterfaceInstall32
Каждый именованный раздел, на который ссылается директива BitReg , имеет следующую форму:
[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
...
Битовый раздел реестра может содержать любое количество записей, каждая из которых размещена в отдельной строке.
Записи
reg-root
Определяет корень дерева реестра для других значений, указанных в этой записи. Он может иметь одно из следующих значений:
HKCR
Сокращение для HKEY_CLASSES_ROOT.
HKCU
Сокращение для HKEY_CURRENT_USER.
HKLM
Сокращение для HKEY_LOCAL_MACHINE.
HKU
Сокращение для HKEY_USERS.
HKR
Относительный корень — то есть ключи, указанные с помощью этого аббревиатуры, относятся к разделу реестра, связанному с разделом INF, в котором указана эта директива BitReg , как показано в следующей таблице.
Раздел INF, содержащий директиву BitReg | Раздел реестра, на который ссылается HKR |
---|---|
Раздел INF DDInstall | Программный ключ устройства |
INF DDInstall. Раздел HW | Аппаратный ключ устройства |
INF DDInstall. Раздел "Службы " | Ключ служб |
Примечание
HKR нельзя использовать в битовом разделе реестра, на который ссылается раздел DefaultInstall INF.
Дополнительные сведения о драйвере, хранящиеся в корневом каталоге HKEY_LOCAL_MACHINE , см. в разделе Деревья реестра и ключи для устройств и драйверов.
Подраздел
Это необязательное значение, выраженное в виде маркера %strkey% , определенного в разделе Strings inf или в виде пути к реестру в заданном корню реестра (key1\key2\key3...), указывает ключ, содержащий запись значения, которую необходимо изменить.
value-entry-name
Указывает имя существующей записи значения типа REG_BINARY в подразделе (existing) для изменения. Он может быть выражен как "строка в кавычках" или как токен %strkey%, определенный в разделе Строки INF.
flags
Это необязательное шестнадцатеричное значение, выраженное в виде битовой маски ORed для определенных системой значений низких слов и флагов высоких слов, указывает, следует ли очищать или задавать биты, указанные в заданной байтовой маске. Значение по умолчанию равно нулю, что очищает биты в 64-разрядном разделе реестра.
Ниже приведены значения битовой маски для каждого из этих флагов.
0x00000000 (FLG_BITREG_CLEARBITS)
Очистите биты, указанные с помощью байтовой маски.
0x00000001 (FLG_BITREG_SETBITS)
Задайте биты, заданные с помощью байтовой маски.
0x00004000 (FLG_BITREG_32BITKEY) (Windows XP и более поздние версии Windows).
Внесите указанное изменение в 32-разрядный реестр. Если этот параметр не указан, изменения вносятся в собственный реестр.
байтовая маска
Эта маска размера байтов, выраженная в шестнадцатеричной нотации, указывает, какие биты следует очистить или задать в текущем значении заданного значения value-entry-name.
байт для изменения
Это значение размера байта, выраженное в десятичном формате, задает отсчитываемый от нуля индекс байта в REG_BINARY-типе, который необходимо изменить.
Комментарии
Имя каждого битового раздела реестра должно быть уникальным для INF-файла, но на него могут ссылаться директивы BitReg в других разделах того же INF. Каждое имя раздела, созданного с помощью ЗАПИСИ INF, должно быть уникальным в INF-файле и соответствовать общим правилам определения имен разделов. Дополнительные сведения об этих правилах см. в статье Общие правила синтаксиса для ФАЙЛОВ INF.
Значение существующей записи типа REG_BINARY также можно изменить, перезаписав его текущее значение в разделе надстройки реестра в другом месте INF-файла. Дополнительные сведения о разделах add-registry см. в справочнике по директиве AddReg .
Для использования директивы BitReg требуется определение другого раздела INF-файла. Однако значение существующей записи типа REG_BINARY можно изменять по битам в таком разделе, тем самым сохраняя значения всех оставшихся битов.
Примеры
В следующем примере показан раздел битового реестра для вымышленного приложения.
[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