INF LogConfig-Direktive

Achtung

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

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

Eine LogConfig-Direktive verweist auf einen oder mehrere inF-writer-definierte Abschnitte, von denen jeder eine logische Konfiguration von Hardwareressourcen angibt – die Interruptanforderungszeilen, Speicherbereiche, E/A-Ports und DMA-Kanäle, die vom Gerät verwendet werden können. Jeder Abschnitt log-config-section gibt einen alternativen Satz busrelativer Hardwareressourcen an, die vom Gerät verwendet werden können.

[DDInstall] | 
[DDInstall.LogConfigOverride] 
  
LogConfig=log-config-section[,log-config-section]...

INF-Dateien für Nicht-PnP-Geräte verwenden diese Direktive, um grundlegende Konfigurationen zu erstellen.

INF-Dateien für PnP-Geräte verwenden diese Direktive nur zum Erstellen von Außerkraftsetzungskonfigurationen.

Jeder benannte Abschnitt, auf den von einer LogConfig-Direktive verwiesen wird, 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)]...]
...

Einträge

ConfigPriority=priority-value
Gibt den Prioritätswert für diese logische Konfiguration wie folgt an:

GEWÜNSCHTEN
Weich konfiguriert, optimal.

NORMAL
Weich konfiguriert, weniger optimal als DESIRED. Dies ist die typische Einstellung.

NORMAL sollte angegeben werden, wenn der abschnitt log-config-in einem DDInstall definiert wurde. LogConfigOverride-Abschnitt , und es kann kein Konfigurationstypwert angegeben werden.

SUBOPTIMALE
Weich konfiguriert, weniger optimal als NORMAL.

HARDRECONFIG
Erfordert eine Jumperänderung, um neu zu konfigurieren.

HARDWIRED
Kann nicht geändert werden.

RESTART
Erfordert einen Neustart, um wirksam zu werden.

REBOOT
Dies ist identisch mit RESTART.

POTENZ
Erfordert, dass der Stromzyklus wirksam wird.

DISABLED
Hardware/Gerät ist deaktiviert.

DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs ist optional, wenn das Gerät an einen Bus angeschlossen ist, der nur über 8-Bit-DMA-Kanäle verfügt und das Gerät DMA des Standardsystems verwendet. Andernfalls kann es sich um einen der folgenden Buchstaben handeln:

Letter 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 werden, wird ein DMA-Standardkanal angenommen.

DMANum gibt einen oder mehrere busrelative DMA-Kanäle als Dezimalzahlen an, die jeweils durch ein Komma (,) vom nächsten getrennt sind.

IOConfig=io-range[,io-range]...
Gibt einen oder mehrere E/A-Portbereiche für das Gerät in einer der folgenden Formen an:

start-end[([decode-mask][:alias-offset][:attr])] (Typ 1 E/A-Bereich)

start
Gibt die Startadresse des E/A-Portbereichs als 64-Bit-Hexadezimaladresse an.

end
Gibt die Endadresse des E/A-Portbereichs an, auch als 64-Bit-Hexadezimaladresse.

decode-mask
Definiert den Aliastyp und kann wie folgt aussehen:

Maskierungswert Bedeutung IOR_Alias Wert
3ff 10-Bit-Decodierung 0x04
Fff 12-Bit-Decodierung 0x10
Ffff 16-Bit-Decodierung 0x00
0 Positive Decodierung 0xFF

Aliasoffset
Wird nicht verwendet.

attr
Gibt den Buchstaben M an, wenn sich der angegebene Bereich im Systemspeicher befindet. Wenn er nicht angegeben wird, befindet sich der angegebene Bereich im E/A-Portbereich.

Größe@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Typ 2 E/A-Bereich)

size
Gibt die Anzahl der Bytes an, die für den E/A-Portbereich als 32-Bit-Hexadezimalwert erforderlich sind.

min
Gibt die niedrigste mögliche Anfangsadresse des E/A-Portbereichs als 64-Bit-Hexadezimaladresse an.

max
Gibt die höchstmögliche Endadresse des E/A-Portbereichs als 64-Bit-Hexadezimaladresse an.

align-mask
Gibt optional eine 64-Bit-Maske an, die in einem bitweisen AND-Vorgang verwendet wird, um den Anfang des E/A-Portbereichs an einer integralen Adressgrenze (in der Regel 32 Bit oder 64 Bit) auszurichten.

decode-mask
Definiert den Aliastyp und kann wie folgt aussehen:

Maskierungswert Bedeutung IOR_Alias Wert
3ff 10-Bit-Decodierung 0x04
Fff 12-Bit-Decodierung 0x10
Ffff 16-Bit-Decodierung 0x00
0 Positive Decodierung 0xFF

Aliasoffset
Wird nicht verwendet.

attr
Gibt den Buchstaben M an, wenn sich der angegebene Bereich im Systemspeicher befindet. Wenn er nicht angegeben wird, befindet sich der angegebene Bereich im E/A-Portbereich.

MemConfig=mem-range[,mem-range]...
Gibt mindestens einen Speicherbereich für das Gerät in einer der folgenden Formen an:

start-end[(attr)] | size@min-max[%align-mask][(attr)]

start
Gibt die physische Startadresse (busrelativ) des Gerätespeicherbereichs als 64-Bit-Hexadezimalwert an.

end
Gibt die physische Endadresse des Speicherbereichs an, auch als 64-Bit-Hexadezimalwert.

attr
Gibt die Attribute des Speicherbereichs als mindestens einen der folgenden Buchstaben an:

Letter Bedeutung
R Schreibgeschützt
W Lesegeschützt
RW Lesen/Schreiben
C Kombinierter Schreibvorgang zulässig
H Zwischenspeicherbar
F Prefetchable
D Kartendecodierungsadressierung ist 32-Bit anstelle von 24-Bit

Wenn sowohl R als auch W angegeben sind oder keines angegeben ist, wird Lese-/Schreibzugriff vorausgesetzt.

size
Gibt die Anzahl der im Speicherbereich erforderlichen Bytes als 32-Bit-Hexadezimalwert an.

min
Gibt die niedrigste mögliche Startadresse des Gerätespeicherbereichs als 64-Bit-Hexadezimalwert an.

max
Gibt die höchstmögliche Endadresse des Speicherbereichs als 64-Bit-Hexadezimalwert an.

align-mask
Optional gibt eine 64-Bit-Maske an, die in einem bitweisen AND-Vorgang verwendet wird, um den Start des Gerätespeicherbereichs an einer integralen (normalerweise 64-Bit)-Adressgrenze auszurichten.

Wenn align-mask nicht angegeben wird, erfolgt die Standardausrichtung des Arbeitsspeichers an einer 4K-Grenze (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs wird weggelassen, wenn das Gerät einen busrelativen, edgegesteuerten IRQ verwendet. Geben Sie andernfalls L an, um einen irQ und LS anzugeben, wenn das Gerät die in diesem Eintrag aufgeführten IRQ-Zeilen gemeinsam nutzen kann.

IRQNum gibt eine oder mehrere busrelative IRQs an, die das Gerät als Dezimalzahlen verwenden kann, die jeweils durch ein Komma (,) vom nächsten getrennt sind.

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Konfiguriert CardBus-Registrierungen und/oder erstellt bis zu zwei permanente Speicherfenster, die dem Attributbereich des Geräts zugeordnet sind. Ein Treiber kann die Speicherfenster verwenden, um über einen ISR auf den Attributbereich zuzugreifen. Geben Sie alle numerischen Werte im Hexadezimalformat an.

Die Elemente eines PcCardConfig-Eintrags sind wie folgt:

ConfigIndex
Gibt den 8-Bit-PCMCIA-Konfigurationsindex für ein Gerät auf einem PCMCIA-Bus an.

MemoryCardBase1
Gibt optional eine 32-Bit-Basisadresse für ein erstes Speicherfenster an.

MemoryCardBase2
Gibt optional eine 32-Bit-Basisadresse für ein zweites Speicherfenster an.

attrs
Gibt optional ein oder mehrere Attribute für das Gerät an, getrennt durch Leerzeichen. Ein ungültiger Attributspezifizierer ungültig den gesamten PcCardConfig-Eintrag . Wenn mehrere Bezeichner für ein bestimmtes Attribut angegeben werden, werden die Attribute auf einzelne E/A- oder Speicherfenster für das Gerät angewendet. Wenn nur ein Bezeichner angegeben wird, wird dieses Attribut auf alle Fenster angewendet (siehe das folgende Beispiel).

Wenn mehrere Bezeichner bereitgestellt werden, wird der erste Bezeichner, der von links nach rechts gelesen wird, auf das erste Fenster angewendet, und der nächste Bezeichner wird auf das zweite Fenster angewendet. Maximal zwei E/A-Fenster und zwei Speicherfenster können durch einen einzelnen PcCardConfig-Eintrag gesteuert werden. Wenn das Gerät über mehr als zwei Speicherfenster verfügt, muss ein zweiter PcCardConfig-Eintrag enthalten sein.

Zu den Attributen gehören:

attribute BESCHREIBUNG
W 16-Bit-E/A-Datenpfad.

Der Standardwert ist 8-Bit, wenn der INF eine LogConfig-Direktive angibt. Wenn keine LogConfig-Direktive angegeben ist, verwendet der Treiber 16-Bit-E/A.
Sn ~IOCS16-Quelle.

Wenn n 0 ist, basiert ~IOCS16 auf dem Wert des Datengrößesbits. Wenn n 1 ist, basiert ~IOCS16 auf dem ~IOIS16-Signal des Geräts. Der Standardwert ist S1.
Zn E/A 8-Bit, 0 Wartezustand.

Wenn n 1 ist, treten 8-Bit-E/A-Zugriffe mit null zusätzlichen Wartezuständen auf. Wenn n 0 ist, erfolgt der Zugriff mit zusätzlichen Wartezuständen. Dieses Flag hat keine Bedeutung für 16-Bit-E/A. Der Standardwert ist Z0.
Xln E/A-Wartezustände.

Wenn n 1 ist, treten 16-Bit-Systemzugriffe mit einem zusätzlichen Wartezustand auf. Der Standardwert ist Xl1.
M 16-Bit-Speicherdatenpfad. Der Standardwert ist 8-Bit.
M8 8-Bit-Speicherdatenpfad.
XMn Speicherwartestatus, wobei n 0, 1, 2 oder 3 sein kann.

Dieser Wert bestimmt die Anzahl zusätzlicher Wartezustände für 16-Bit-Zugriffe auf ein Speicherfenster. Der Standardwert ist XM3.
A Speicherbereich, der als Attributspeicher zugeordnet werden soll.
C Speicherbereich, der als Allgemeiner Arbeitsspeicher (Standard) zugeordnet werden soll.

Ein attrs-Wert von (WB CA M XM1 XI0) bedeutet beispielsweise 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 Speicherort des Attributspeichers der Konfigurationsregister für eine Funktion eines Multifunktionsgeräts wie folgt an:

ConfigRegBase
Gibt den Attributoffset der Konfigurationsregister für diese Funktion des Multifunktionsgeräts an.

ConfigOptions
Gibt das 8-Bit-PCMCIA-Konfigurationsoptionsregister an.

IoResourceIndex
Gibt den Index für den IOConfig-Eintrag für den Bustreiber an, der bei der Programmierung der Konfigurations-E/A-Basis- und Limitregister verwendet werden soll. Dieser Index ist nullbasiert, d. h. null gibt den anfänglichen IOConfig-Eintrag in diesem log-config-section an.

attrs
Bei Festlegung auf den Buchstaben A weist den PCMCIA-Bustreiber an, die Audioaktivierung in der Konfiguration und status Registern zu aktivieren.

Jeder MfCardConfig-Eintrag liefert Informationen zu einer einzelnen Funktion des Multifunktionsgeräts. Wenn eine Reihe von LogConfig-Anweisungen jeweils auf einen diskreten log-config-abschnitt im DDInstall des INF verweisen. LogConfigOverride-Abschnitt , jeder log-config-section muss seine Einträge, einschließlich MfCardConfig-Einträgen , in der gleichen Reihenfolge aufgeführt sein.

Hinweise

Eine LogConfig-Direktive kann unter jedem einzelnen Hersteller, modellspezifischem INF DDInstall-Abschnitt oder INF DDInstall angegeben werden. LogConfigOverride-Abschnitt.

Ein INF für ein Nicht-PnP-Gerät, das mehrere alternative logische Konfigurationen unterstützt, definiert in der Regel einen Satz von protokoll-config-abschnitten unter einem DDInstall-Abschnitt . Jeder log-config-section gibt einen diskreten Satz logischer Konfigurationsressourcen an. Es enthält auch einen ConfigPriority-Eintrag , der jede logische Konfiguration entsprechend ihren Auswirkungen auf die Geräte- und Treiberleistung, die einfache Initialisierung usw. einordnet.

Bei PnP-Geräten weist der PnP-Manager jedem PnP-Gerät einen Satz logischer Hardwareressourcen zu. Das heißt, der PnP-Manager fragt die Systembustreiber ab, empfängt ihre Berichte über verwendete E/A-Buskonfigurationsressourcen pro Gerät und weist pro Gerät Sätze logischer Hardwareressourcen zu, um das beste systemweite Gleichgewicht bei der Nutzung dieser Ressourcen zu erreichen.

Daher wird die LogConfig-Direktive unter einem DDInstall-Abschnitt für PnP-Geräte ignoriert. Um die vom Bus für ein PnP-Gerät gemeldeten Ressourcen außer Kraft zu setzen, schließen Sie die LogConfig-Direktive unter einem DDInstall ein. LogConfigOverride-Abschnitt . In diesem Fall werden die im Abschnitt log-config-angegebenen Ressourcen anstelle der vom Bus gemeldeten Ressourcen verwendet.

Plattformerweiterungen können einem DDInstall-Abschnitt hinzugefügt werden, der eine LogConfig-Direktive enthält, oder einem DDInstall-Objekt. LogConfigOverride-Abschnitt , um plattformspezifische oder betriebssystemspezifische logische Konfigurationen anzugeben. Weitere Informationen finden Sie unter Erstellen einer INF-Datei.

Ein bestimmter Name des log-config-section muss für die INF-Datei eindeutig sein, kann jedoch von LogConfig-Anweisungen in anderen ABSCHNITTen von INF DDInstall für die gleichen Geräte referenziert werden. Jeder vom INF-Writer erstellte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und den allgemeinen Regeln zum Definieren von Abschnittsnamen entsprechen. Weitere Informationen zu diesen Regeln finden Sie unter Allgemeine Syntaxregeln für INF-Dateien.

In jedem log-config-abschnitt kann nur ein ConfigPriority-Eintrag verwendet werden. Abhängig von den Hardwareressourcenanforderungen des Geräts können mehrere einträge vorhanden sein.

Mindestens ein MfCardConfig=-Eintrag kann nur in einem log-config-abschnitt angezeigt werden, auf den eine LogConfig-Direktive im DDInstall verweist. LogConfigOverride-Abschnitt eines INF für ein Multifunktionsgerät. Weitere Informationen zu INF-Dateien für Multifunktionsgeräte finden Sie unter Unterstützen von Multifunktionsgeräten.

LogConfig-Referenced Abschnittseinträge und -werte

Aus einem Log-config-Abschnitt erstellt das Systeminstallationsprogramm binäre logische Konfigurationsdatensätze und speichert sie in der Registrierung.

Eine INF-Datei kann eine beliebige Anzahl von Protokollkonfigurationsabschnitten pro Gerät enthalten. Jeder dieser Abschnitte muss jedoch vollständige Informationen zum Installieren eines Geräts enthalten. Im Allgemeinen sollte der INF die Einträge in jedem seiner log-config-Abschnitte in derselben Reihenfolge angeben. Der INF sollte jeden Satz von Einträgen in der Reihenfolge angeben, die für die Initialisierung des Geräts durch den Treiber am besten geeignet ist.

Wenn für ein bestimmtes Gerät mehr als ein log-config-abschnitt vorhanden ist, wird während der Installation nur einer dieser INF-Abschnitte verwendet. Eine solche INF-Datei steuert teilweise, welche dieser Abschnitt mit dem ConfigPriority-Wert verwendet wird, den sie in jedem log-config-abschnitt bereitstellt. Das heißt, die Systeminstallationsprogramme versuchen, alle Konfigurationsprioritäten in einer INF-Datei zu berücksichtigen, können jedoch eine logische Konfiguration mit niedrigerer Rangfolge auswählen, wenn ein Konflikt mit einem bereits installierten Gerät gefunden wird.

Während der Installation wird nur eine Ressource aus jedem Eintrag in einem bestimmten log-config-Abschnitt 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 den log-config-abschnitten verwendet werden.

Um beispielsweise zwei E/A-Portbereiche für ein bestimmtes Gerät sicherzustellen, müssen im Abschnitt log-config-für dieses Gerät zwei IOConfig=-Einträge angegeben werden. Wenn ein Gerät hingegen keinen IRQ benötigt, kann sein INF den IRQConfig-Eintrag aus den log-config-abschnitten 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 . Es gibt eine E/A-Portregion mit einer Größe von acht Bytes an, die bei 1F8, 2F8 oder 3F8 beginnen kann.

IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF

Im Gegensatz dazu zeigt dieses Beispiel eine Typ-2-E/A-Bereichsspezifikation in einem IOConfig-Eintrag . Er gibt einen E/A-Portbereich mit einer Größe von acht Bytes an, der 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, die jeweils einen E/A-Portbereich angeben, der durch 0x400 Bytes vom nächsten versetzt wird.

IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f

Die nächsten beiden Beispiele zeigen typische MemConfig-Einträge .

In diesem Beispiel wird ein Arbeitsspeicherbereich von 32.000 Bytes angegeben, der entweder bei C0000 oder D0000 beginnen kann.

MemConfig=C0000-C7FFF, D0000-D7FFF

In diesem Beispiel wird ein Speicherbereich von 32.000 Bytes ab 64.000 Byte angegeben.

MemConfig=8000@C0000-D7FFF%F0000

Dieses Beispiel zeigt, wie die INF-Datei der SYSTEM-HDC-Klasse mehrere Protokollkonfigurationsabschnitte für generische ESDI-Festplattencontroller einrichtet und einen DDInstall verwendet. LogConfigOverride-Abschnitt für einen bestimmten IDE-Controller.

[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 für die Verwendung von MfCardConfig-Einträgen finden Sie unter Unterstützen von PC-Karten mit unvollständigen Konfigurationsregisteradressen.

Weitere Informationen

DDInstall

DDInstall. FactDef