INF-Direktive BitReg

Achtung

Ab Windows 11 Version 22H2 ist ein Treiberpaket, das diese Direktive verwendet, nicht mehr für eine Signatur vom Hardware Developer Center geeignet.

Universelle Treiberpakete und Windows-Treiber können diese Direktive nicht verwenden.

Eine BitReg-Direktive verweist auf einen oder mehrere vom INF-Autor*innen definierte Abschnitte, die zum Festlegen oder Löschen von Bits innerhalb eines vorhandenen Werteintrags vom Typ REG_BINARY in der Registrierung verwendet werden. Diese Direktive wird jedoch nur selten in INF-Dateien für Geräte/Treiber verwendet.

[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]...

Eine BitReg-Direktive kann unter jedem der Abschnitte angegeben werden, die in der formalen Syntaxanweisung oben aufgeführt sind. Diese Direktive kann auch in einem der folgenden von INF-Autor*innen definierten Abschnitte angegeben werden:

  • Einem service-install-section oder event-log-install-Abschnitt, auf den die Direktive AddService in einem DDInstall.Services-Abschnitt verweist.
  • Ein add-interface-section, der von der Direktive AddInterface in einem DDInstall.Interfaces-Abschnitt referenziert wird.
  • Ein Install-interface-section, der in einem InterfaceInstall32-Abschnitt referenziert wird

Jeder benannte Abschnitt, der von einer BitReg-Direktive referenziert wird, hat die folgende Form:

[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
...

Ein bit-registry-section kann eine beliebige Anzahl von Einträgen enthalten, die jeweils in einer eigenen Zeile stehen.

Entries

reg-root
Identifiziert die Root des Registrierungsbaums für andere in diesem Eintrag angegebene Werte. Der Wert kann in folgenden Formen vorliegen:

HKCR
Abkürzung für HKEY_CLASSES_ROOT.

HKCU
Abkürzung für HKEY_CURRENT_USER.

HKLM
Abkürzung für HKEY_LOCAL_MACHINE.

HKU
Abkürzung für HKEY_USERS.

HKR
Relatives Root – d. h. Schlüssel, die mit dieser Abkürzung angegeben werden, sind relativ zu dem Registrierungsschlüssel, der mit dem INF-Abschnitt verbunden ist, in dem diese BitReg-Direktive erscheint, wie in der folgenden Tabelle angegeben.

INF-Abschnitt, der die BitReg-Direktive enthält Registrierungsschlüssel, der von HKR referenziert wird
INF DDInstall Abschnitt Der Softwareschlüssel des Geräts
INF DDInstall.HW Abschnitt Der Hardwareschlüssel des Geräts
INF DDInstall.Services Abschnitt Der Services-Schlüssel

Hinweis

HKR kann nicht in einem bit-registry-section verwendet werden, der von einem INF DefaultInstall-Abschnitt referenziert wird.

Weitere Informationen über Treiberinformationen, die unter dem HKEY_LOCAL_MACHINE-Root gespeichert werden, finden Sie unter Registrierungsbäume und -schlüssel für Geräte und Treiber.

subkey
Dieser optionale Wert, der entweder als %strkey% Token in einem Strings-Abschnitt der INF oder als Registrierungspfad unter der angegebenen reg-root (key1\key2\key3...) ausgedrückt wird, gibt den Schlüssel an, der den zu ändernden Werteintrag enthält.

value-entry-name
Gibt den Namen eines bestehenden Werteintrags vom Typ REG_BINARY in dem (bestehenden) Unterschlüssel an, der geändert werden soll. Er kann entweder als „Zeichenfolge in Anführungszeichen“ oder als %strkey% Token ausgedrückt werden, das im Abschnitt Strings der INF definiert ist.

flags
Dieser optionale hexadezimale Wert, ausgedrückt als eine OD-verknüpfte Bitmaske aus systemdefinierten Low Word- und High Word-Flag-Werten, gibt an, ob die in der angegebenen Byte-Maske angegebenen Bits gelöscht oder gesetzt werden sollen. Der Standardwert ist Null, wodurch die Bits im 64-Bit-Bereich der Registrierung gelöscht werden.

Die Bitmaskenwerte für jedes dieser Flags lauten wie folgt:

0x00000000 (FLG_BITREG_CLEARBITS)
Löschen der durch Byte-Maske angegebenen Bits.

0x00000001 (FLG_BITREG_SETBITS)
Setzen der durch Byte-Maske angegebenen Bits.

0x00004000 (FLG_BITREG_32BITKEY) (Windows XP und spätere Versionen von Windows.)
Nimmt die angegebene Änderung in der 32-Bit-Registrierung vor. Wenn nicht angegeben, wird die Änderung in der nativen Registrierung vorgenommen.

byte-mask
Diese bytegroße Maske, ausgedrückt in hexadezimaler Notation, gibt an, welche Bits im aktuellen Wert des angegebenen value-entry-name gelöscht oder festgelegt werden sollen.

byte-to-modify
Dieser bytegroße Wert, ausgedrückt in dezimaler Schreibweise, gibt den nullbasierten Index des Bytes innerhalb des zu ändernden Wertes vom Typ REG_BINARY an.

Hinweise

Jeder bit-registry-section-Name muss in der INF-Datei eindeutig sein, aber er kann von BitReg-Direktiven in anderen Sektionen derselben INF referenziert werden. Jeder von INF-Autor*innen erstellte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und den allgemeinen Regeln für die Definition von Abschnittsnamen entsprechen. Weitere Informationen zu diesen Regeln finden Sie unter Allgemeine Syntaxregeln für INF-Dateien.

Der Wert eines vorhandenen Werteintrags vom Typ REG_BINARY kann auch geändert werden, indem sein aktueller Wert in einem Abschnitt add-registry an anderer Stelle in der INF-Datei überschrieben wird. Weitere Informationen über add-registry-sections finden Sie in der Referenz für die Direktive AddReg.

Die Verwendung einer BitReg-Direktive erfordert die Definition eines weiteren INF-Dateiabschnitts. Allerdings kann der Wert eines vorhandenen Werteintrags vom Typ REG_BINARY in einem solchen Abschnitt Bit für Bit geändert werden, so dass die Werte aller übrigen Bits erhalten bleiben.

Beispiele

Das folgende Beispiel zeigt einen Bit-Registrierungsabschnitt für eine fiktive Anwendung.

[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

Siehe auch

AddInterface

AddReg

AddService

ClassInstall32

DDInstall

DDInstall.CoInstallers

DDInstall.HW

InterfaceInstall32