INF LogConfig Direktive
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 LogConfig-Direktive verweist auf einen oder mehrere von INF-Autor*innen definierte Abschnitte, von denen jeder eine logische Konfiguration von Hardwareressourcen angibt – die Zeilen für Interrupt-Anfragen, Speicherbereiche, I/O-Ports und DMA-Kanäle, die vom Gerät verwendet werden können. Jeder log-config-section legt eine alternative Reihe von Bus-relativen Hardware-Ressourcen fest, die von dem Gerät verwendet werden können.
[DDInstall] |
[DDInstall.LogConfigOverride]
LogConfig=log-config-section[,log-config-section]...
INF-Dateien für Nicht-PnP-Geräte erstellen mit Hilfe dieser Direktive Basiskonfigurationen.
INF-Dateien für PnP-Geräte verwenden diese Direktive nur, um Override-Konfigurationen zu erstellen.
Jeder benannte Abschnitt, auf den eine LogConfig-Direktive verweist, hat die folgende Form:
[log-config-section]
ConfigPriority=priority-value[,config-type]
[DMAConfig=[DMAattrs:]DMANum[,DMANum]...]
[IOConfig=io-range[,io-range]...]
[MemConfig=mem-range[,mem-range]...]
[IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...]
[PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]]
[MfCardConfig=ConfigRegBase:ConfigOptions[:IoResourceIndex][(attrs)]...]
...
Entries
ConfigPriority=priority-value
Gibt den Prioritätswert für diese logische Konfiguration an, als eine der folgenden Möglichkeiten:
DESIRED
Soft konfiguriert, optimal.
NORMAL
Soft konfiguriert, weniger optimal als DESIRED. Dies ist die typische Einstellung.
NORMAL sollte angegeben werden, wenn der log-config-section in einem DDInstall.LogConfigOverride-Abschnitt definiert wurde und kein config-type-Wert angegeben werden kann.
SUBOPTIMAL
Soft konfiguriert, weniger optimal als NORMAL.
HARDRECONFIG
Erfordert eine Jumper-Änderung zur Neukonfiguration.
HARDWIRED
Kann nicht geändert werden.
RESTART
Erfordert einen Neustart, um wirksam zu werden.
REBOOT
Identisch mit RESTART.
POWEROFF
Erfordert das Ausschalten, um wirksam zu werden.
DISABLED
Hardware/Gerät ist deaktiviert.
DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs ist optional, wenn das Gerät an einen Bus angeschlossen ist, der nur 8-Bit-DMA-Kanäle hat und das Gerät Standard-System-DMA verwendet. Andernfalls kann es einer der folgenden Buchstaben sein:
Brief | Bedeutung |
---|---|
D | 32-Bit-DMA |
W | 16-Bit-DMA |
N | 8-Bit-DMA |
Wenn das Gerät Bus-Master-DMA verwendet, müssen Sie M mit einem der folgenden (sich gegenseitig ausschließenden) Buchstaben verwenden, der den Typ des verwendeten DMA-Kanals angibt: A, B, oder F. Wenn weder A, B noch F angegeben sind, wird ein Standard-DMA-Kanal angenommen.
DMANum gibt einen oder mehrere Bus-relative DMA-Kanäle als Dezimalzahlen an, die jeweils durch ein Komma (,) voneinander getrennt sind.
IOConfig=io-range[,io-range]...
Gibt einen oder mehrere E/A-Port-Bereiche für das Gerät an, in einer der folgenden Formen:
Start-Ende[([Decode-Maske][:alias-offset][:attr])] (Typ 1 E/A-Bereich)
start
Gibt die Anfangsadresse des E/A-Port-Bereichs als 64-Bit-Hexadezimaladresse an.
end
Gibt die Endadresse des E/A-Port-Bereichs an, ebenfalls als 64-Bit-Hexadezimaladresse.
decode-mask
Definiert den Typ des Alias und kann einer der folgenden Werte sein:
Maskenwert | Bedeutung | IOR_Alias-Wert |
---|---|---|
3ff | 10-Bit-Decode | 0x04 |
fff | 12-Bit-Decode | 0x10 |
ffff | 16-Bit-Decode | 0x00 |
0 | Positiv-Decode | 0xFF |
alias-offset
Wird nicht verwendet.
attr
Gibt den Buchstaben M an, wenn sich der angegebene Bereich im Systemspeicher befindet. Wenn Sie diesen Buchstaben weglassen, befindet sich der angegebene Bereich im E/A-Port-Bereich.
size@min-max[%align-mask][([decode-mask][:alias-offset][:Attr]] (Typ 2 E/A-Bereich)
size
Gibt die Anzahl der für den E/A-Port-Bereich benötigten Bytes als 32-Bit-Hexadezimalwert an.
min
Gibt die niedrigste mögliche Startadresse des E/A-Port-Bereichs als 64-Bit-Hexadezimaladresse an.
max
Gibt die höchstmögliche Endadresse des E/A-Port-Bereichs als 64-Bit-Hexadezimaladresse an.
align-mask
Gibt optional eine 64-Bit-Maske an, die in einem bitweisen AND-Vorgang verwendet wird, um den Beginn des E/A-Port-Bereichs an einer ganzzahligen (normalerweise 32-Bit oder 64-Bit) Adressgrenze auszurichten.
decode-mask
Definiert den Typ des Alias und kann einer der folgenden Werte sein:
Maskenwert | Bedeutung | IOR_Alias-Wert |
---|---|---|
3ff | 10-Bit-Decode | 0x04 |
fff | 12-Bit-Decode | 0x10 |
ffff | 16-Bit-Decode | 0x00 |
0 | Positiv-Decode | 0xFF |
alias-offset
Wird nicht verwendet.
attr
Gibt den Buchstaben M an, wenn sich der angegebene Bereich im Systemspeicher befindet. Wenn Sie diesen Buchstaben weglassen, befindet sich der angegebene Bereich im E/A-Port-Bereich.
MemConfig=mem-range[,mem-range]...
Gibt einen oder mehrere Speicherbereiche für das Gerät in einer der folgenden Formen an:
start-end[(attr)] | size@min-max[%align-mask][(attr)]
start
Gibt die erste (bus-relative) physikalische Adresse des Speicherbereichs des Geräts als 64-Bit-Hexadezimalwert an.
end
Gibt die letzte physikalische Adresse des Speicherbereichs an, ebenfalls als 64-Bit-Hexadezimalwert.
attr
Legt die Attribute des Speicherbereichs als einen oder mehrere der folgenden Buchstaben fest:
Brief | Bedeutung |
---|---|
R | Schreibgeschützt |
W | Lesegeschützt |
RW | Lesen/Schreiben |
C | Kombiniertes Schreiben zugelassen |
H | Zwischenspeicherbar |
F | Prefetchable |
D | Kartendekodierung mit 32-Bit-Adressierung anstelle von 24-Bit |
Wenn sowohl R als auch W angegeben sind oder wenn keines von beiden angegeben ist, wird Lesen/Schreiben angenommen.
size
Gibt die Anzahl der im Speicherbereich benötigten Bytes als 32-Bit-Hexadezimalwert an.
min
Gibt die niedrigste mögliche Startadresse des Speicherbereichs des Geräts als 64-Bit-Hexadezimalwert an.
max
Gibt die höchstmögliche Endadresse des Speicherbereichs in Form eines 64-Bit-Hexadezimalwerts an.
align-mask
Gibt optional eine 64-Bit-Maske an, die in einem bitweisen AND-Vorgang verwendet wird, um den Beginn des Speicherbereichs des Geräts an einer ganzzahligen (normalerweise 64-Bit) Adressgrenze auszurichten.
Wenn align-mask weggelassen wird, erfolgt die Standard-Speicherausrichtung an einer 4K-Grenze (FFFFF000).
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs wird weggelassen, wenn das Gerät einen bus-relativen, Edge-getriggerten IRQ verwendet. Andernfalls geben Sie L an, um einen Level-getriggerten IRQ anzugeben und LS, wenn das Gerät die in diesem Eintrag aufgeführten IRQ-Lines gemeinsam nutzen kann.
IRQNum gibt einen oder mehrere bus-relative IRQs an, die das Gerät als Dezimalzahlen verwenden kann, die jeweils durch ein Komma (,) voneinander getrennt sind.
PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Konfiguriert CardBus-Register und/oder erstellt bis zu zwei permanente Speicherfenster, die dem Attributbereich des Geräts zugeordnet sind. Ein Treiber kann die Speicherfenster verwenden, um von einer ISR aus auf den Attributbereich zuzugreifen. Geben Sie alle numerischen Werte im hexadezimalen Format an.
Die Elemente eines PcCardConfig-Eintrags sind wie folgt:
ConfigIndex
Gibt den 8-Bit PCMCIA-Konfigurationsindex für ein Gerät an einem PCMCIA-Bus an.
MemoryCardBase1
Legt optional eine 32-Bit-Basisadresse für ein erstes Speicherfenster fest.
MemoryCardBase2
Legt optional eine 32-Bit-Basisadresse für ein zweites Speicherfenster fest.
attrs
Gibt optional ein oder mehrere Attribute für das Gerät an, die durch Leerzeichen getrennt sind. Ein ungültiger Attributsspezifizierer macht den gesamten PcCardConfig-Eintrag ungültig. Wenn mehr als ein Bezeichner für ein bestimmtes Attribut angegeben wird, werden die Attribute auf einzelne E/A- oder Speicherfenster für das Gerät angewendet. Wenn Sie nur einen Bezeichner angeben, wird dieses Attribut auf alle Fenster angewendet (siehe folgendes Beispiel).
Wenn mehrere Bezeichner angegeben werden, wird der erste Bezeichner, der von links nach rechts gelesen wird, auf das erste Fenster und der nächste Bezeichner auf das zweite Fenster angewendet. Maximal zwei E/A-Fenster und zwei Speicherfenster können von einem einzigen PcCardConfig-Eintrag gesteuert werden. Wenn das Gerät über mehr als zwei Speicherfenster verfügt, muss ein zweiter PcCardConfig-Eintrag hinzugefügt werden.
Die Attribute umfassen:
Attribute | Beschreibung |
---|---|
W | 16-Bit E/A-Datenpfad. Der Standardwert ist 8-Bit, wenn die INF eine LogConfig-Direktive angibt. Wenn keine LogConfig-Direktive angegeben ist, verwendet der Treiber 16-Bit E/A. |
Sn | ~IOCS16 source. Wenn n gleich 0 ist, basiert ~IOCS16 auf dem Wert des Bits datasize. Wenn n gleich 1 ist, basiert ~IOCS16 auf dem ~IOIS16-Signal des Geräts. Die Voreinstellung ist S1. |
Zn | E/A 8-Bit, Null-Wartezustand. Wenn n gleich 1 ist, erfolgen 8-Bit E/A-Zugriffe mit null zusätzlichen Wartezuständen. Wenn n gleich 0 ist, erfolgt der Zugriff mit zusätzlichen Wartezuständen. Dieses Flag hat keine Bedeutung für 16-Bit E/A. Die Voreinstellung ist Z0. |
Xln | E/A-Wartezustände. Wenn n gleich 1 ist, erfolgen 16-Bit-Systemzugriffe mit einem zusätzlichen Wartezustand. Die Voreinstellung ist Xl1. |
M | 16-Bit-Speicherdatenpfad. Die Voreinstellung ist 8-Bit. |
M8 | 8-Bit-Speicherdatenpfad. |
XMn | Speicher-Wartezustände, wobei n 0, 1, 2 oder 3 sein kann. Dieser Wert bestimmt die Anzahl der zusätzlichen Wartestatus für 16-Bit-Zugriffe auf ein Speicherfenster. Die Voreinstellung ist XM3. |
A | Speicherbereich, der als Attributspeicher zugeordnet werden soll. |
C | Speicherbereich, der als allgemeiner Speicher zugeordnet werden soll (Voreinstellung). |
Ein attrs-Wert von (WB CA M XM1 XI0) bedeutet zum Beispiel Folgendes:
1st I/O window is 16-bit
2nd I/O window 8-bit
1st memory window is common
2nd memory window is attribute
Memory is 16-bit
One wait state on memory windows
Zero wait states on I/O windows
MfCardConfig=ConfigRegBase:ConfigOptions[:IoResourceIndex][(attrs)]...
Gibt den Attribut-Speicherplatz des Satzes von Konfigurationsregistern für eine Funktion eines Multifunktionsgeräts wie folgt an:
ConfigRegBase
Gibt den Attribut-Offset der Konfigurationsregister für diese Funktion des Multifunktionsgerätes an.
ConfigOptions
Gibt das 8-Bit PCMCIA-Konfigurationsoptionsregister an.
IoResourceIndex
Gibt den Index des IOConfig-Eintrags an, den der Bustreiber bei der Programmierung der E/A-Basis- und Limitregister der Konfiguration verwenden soll. Dieser Index ist nullbasiert, d. h. Null bezeichnet den ersten IOConfig-Eintrag in diesem log-config-section.
attrs
Wenn er auf den Buchstaben A festgelegt ist, weist er den PCMCIA-Bustreiber an, die Audioaktivierung in den Konfigurations- und Statusregistern zu aktivieren.
Jeder MfCardConfig-Eintrag liefert Informationen über eine einzelne Funktion des Multifunktionsgeräts. Wenn eine Reihe von LogConfig-Direktiven jeweils auf einen einzelnen log-config-section im Abschnitt DDInstall.LogConfigOverride der INF verweisen, müssen die Einträge in jedem log-config-section, einschließlich der MfCardConfig-Einträge, in der gleichen Reihenfolge aufgeführt sein.
Hinweise
Eine LogConfig-Direktive kann unter jedem INF DDInstall-Abschnitt oder INF DDInstall.LogConfigOverride Abschnitt pro Hersteller und pro Modell angegeben werden.
Eine INF für ein Nicht-PnP-Gerät, das mehrere alternative logische Konfigurationen unterstützt, definiert typischerweise eine Reihe von log-config-sections unter einem DDInstall-Abschnitt. Jeder log-config-section legt eine diskrete Gruppe von logischen Konfigurationsressourcen fest. Sie enthält auch einen ConfigPriority-Eintrag, der jede logische Konfiguration nach ihren Auswirkungen auf die Leistung von Gerät und Treiber, die Einfachheit der Initialisierung usw. einstuft.
Bei PnP-Geräten weist der PnP-Manager jedem PnP-Gerät eine Reihe von logischen Hardwareressourcen zu. Das heißt, der PnP-Manager fragt die Systembustreiber ab, erhält deren Berichte über die genutzten E/A-Bus-Konfigurationsressourcen pro Gerät und weist jedem Gerät einen Satz logischer Hardwareressourcen zu, um ein optimales systemweites Gleichgewicht bei der Nutzung all dieser Ressourcen zu erreichen.
Daher wird die Direktive LogConfig unter einem DDInstall-Abschnitt für PnP-Geräte ignoriert. Um die vom Bus gelieferten Ressourcen für ein PnP-Gerät zu überschreiben, fügen Sie die Direktive LogConfig unter einem DDInstall.LogConfigOverride-Abschnitt ein. In diesem Fall werden die im log-config-section angegebenen Ressourcen anstelle der vom Bus gelieferten Ressourcen verwendet.
Plattform-Erweiterungen können zu einem DDInstall-Abschnitt, der eine LogConfig-Direktive enthält, oder zu einem DDInstall.LogConfigOverride-Abschnitt hinzugefügt werden, um plattformspezifische oder Betriebssystem-spezifische logische Konfigurationen anzugeben. Weitere Informationen finden Sie unter Erstellen einer INF-Datei.
Ein bestimmter log-config-section-Name muss in der INF-Datei eindeutig sein, kann aber von LogConfig-Direktiven in anderen INF DDInstall-Abschnitten für dieselben Geräte 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.
In jedem log-config-section kann nur ein ConfigPriority-Eintrag verwendet werden. Von jedem der anderen Einträge kann es mehr als einen geben, abhängig von den Hardware-Ressourcenanforderungen des Geräts.
Ein oder mehrere MfCardConfig=-Einträge können nur in einem log-config-section erscheinen, der von einer LogConfig-Direktive im DDInstall.LogConfigOverride-Abschnitt einer INF für ein Multifunktionsgerät referenziert wird. Weitere Informationen über INF-Dateien für Multifunktionsgeräte finden Sie unter Unterstützung von Multifunktionsgeräten.
LogConfig-Referenzierte Abschnittseinträge und -werte
Aus einem log-config-section erstellt der System-Installer binäre logische Konfigurationssätze und speichert sie in der Registrierung.
Eine INF-Datei kann eine beliebige Anzahl von log-config-sections pro Gerät enthalten. Jeder dieser Abschnitte muss jedoch vollständige Informationen für die Installation eines Geräts enthalten. Allgemein sollte die INF die Einträge in jedem ihrer log-config-sections in der gleichen Reihenfolge angeben. Die INF sollte jeden Satz von Einträgen in der Reihenfolge festlegen, die am besten dazu passt, wie der Treiber sein Gerät initialisiert.
Wenn mehr als ein log-config-section für ein bestimmtes Gerät vorhanden ist, wird nur einer dieser INF-Abschnitte während der Installation verwendet. Eine solche INF-Datei steuert mit dem in jedem log-config-section angegebenen Wert ConfigPriority teilweise, welcher dieser Abschnitte verwendet wird. Das heißt, der System-Installer versucht, alle Konfigurationsprioritäten in einer INF-Datei zu berücksichtigen, wählt aber möglicherweise eine logische Konfiguration mit niedrigerem Rang, wenn ein Konflikt mit einem bereits installierten Gerät festgestellt wird.
Während der Installation wird aus jedem Eintrag in einem bestimmten log-config-section eine einzige Ressource ausgewählt und einem bestimmten Gerät zugewiesen. Wenn ein bestimmtes Gerät mehr als eine Ressource desselben Typs benötigt, muss eine Reihe von Einträgen dieses Typs in seinen log-config-sections verwendet werden.
Um zum Beispiel zwei E/A-Port-Bereiche für ein bestimmtes Gerät zu gewährleisten, müssen zwei IOConfig=-Einträge im log-config-section für dieses Gerät angegeben werden. Benötigt ein Gerät hingegen keinen IRQ, kann seine INF den Eintrag IRQConfig in den log-config-sections weglassen.
Beispiele
Dieses Beispiel zeigt einige gültige PcCardConfig-Einträge für ein PCMCIA-Gerät.
PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)
Dieses Beispiel zeigt eine Typ 1 E/A-Bereichsspezifikation in einem IOConfig-Eintrag. Er spezifiziert eine E/A-Port-Region mit einer Größe von acht Bytes, die bei 1F8, 2F8 oder 3F8 beginnen kann.
IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
Im Gegensatz dazu zeigt dieses Beispiel eine E/A-Bereichsspezifikation vom Typ 2 in einem IOConfig-Eintrag. Er spezifiziert eine E/A-Port-Region mit einer Größe von acht Bytes, die bei 300, 308, 310, 318, 320 oder 328 beginnen kann.
IOConfig=8@300-32F%FF8
Dieses Beispiel zeigt eine Reihe von IOConfig-Einträgen für ein Gerät mit vier Ports, von denen jeder einen E/A-Port-Bereich festlegt, der um 0x400 Bytes vom nächsten versetzt ist.
IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f
Die nächsten beiden Beispiele zeigen typische MemConfig-Einträge.
Dieses Beispiel spezifiziert eine Region von 32K Bytes, die entweder bei C0000 oder D0000 beginnen kann.
MemConfig=C0000-C7FFF, D0000-D7FFF
Dieses Beispiel spezifiziert eine Region von 32k Bytes, die an 64K-Grenzen beginnt.
MemConfig=8000@C0000-D7FFF%F0000
Dieses Beispiel zeigt, wie die INF-Datei der HDC-Klasse des Systems mehrere log-config-sections für generische ESDI-Festplatten-Controller einrichtet und einen DDInstall.LogConfigOverride-Abschnitt für einen bestimmten IDE-Controller verwendet.
[MS_HDC] ; per-manufacturer Models section
%FujitsuIdePccard.DeviceDesc% =
atapi_fujitsu_Inst, PCMCIA\FUJITSU-IDE-PC_CARD-DDF2
%*PNP0600.DeviceDesc% = atapi_Inst, *PNP0600 ; generic ESDI HDCs
; ... other manufacturers' Models sections omitted
[atapi_Inst]
CopyFiles = @atapi.sys
LogConfig = esdilc1, esdilc2, esdilc3, esdilc4
; ... [atapi_Inst.Services] + service/EventLog-install omitted here
[esdilc1]
ConfigPriority=HARDWIRED
IOConfig=1f0-1f7(3ff::)
IoConfig=3f6-3f6(3ff::)
IRQConfig=14
[esdilc2]
ConfigPriority=HARDWIRED
IOConfig=170-177(3ff::)
IoConfig=376-376(3ff::)
IRQConfig=15
[esdilc3]
ConfigPriority=HARDWIRED
IOConfig=1e8-1ef(3ff::)
IoConfig=3ee-3ee(3ff::)
IRQConfig=11
[esdilc4]
; ...
[atapi_fujitsu_Inst.LogConfigOverride]
LogConfig = fujitsu.LogConfig0
[fujitsu.LogConfig0]
ConfigPriority=NORMAL
IOConfig=10@100-400%fff0
IRQConfig=14,15,5,7,9,11,12,3
PcCardConfig=1:0:0(W)
Einige Beispiele dafür, wie MfCardConfig-Einträge verwendet werden, finden Sie unter Unterstützung von PC-Karten mit unvollständigen Konfigurationsregisteradressen.