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