Direttiva INF LogConfig
Attenzione
A partire da Windows 11 versione 22H2, un pacchetto driver che usa questa direttiva non è più idoneo per una firma da Hardware Developer Center.
I pacchetti driver universali e i driver di Windows non possono usare questa direttiva.
Una direttiva LogConfig fa riferimento a una o più sezioni definite dal writer INF, ognuna delle quali specifica una configurazione logica delle risorse hardware – le righe di richiesta di interrupt, gli intervalli di memoria, le porte di I/O e i canali DMA che possono essere usati dal dispositivo. Ogni sezione log-config-section specifica un set alternativo di risorse hardware relative al bus che possono essere usate dal dispositivo.
[DDInstall] |
[DDInstall.LogConfigOverride]
LogConfig=log-config-section[,log-config-section]...
I file INF per i dispositivi non PnP usano questa direttiva per creare configurazioni di base.
I file INF per i dispositivi PnP usano questa direttiva solo per creare configurazioni di override.
Ogni sezione denominata a cui fa riferimento una direttiva LogConfig ha il formato seguente:
[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)]...]
...
whse.
ConfigPriority=priority-value
Specifica il valore di priorità per questa configurazione logica, come uno dei seguenti:
DESIDERATO
Configurazione temporanea, ottimale.
NORMALE
Soft configurato, meno ottimale di DESIRED. Questa è l'impostazione tipica.
È necessario specificare NORMAL se la sezione log-config-section è stata definita in un DDInstall. È possibile specificare la sezione LogConfigOverride e non è possibile specificare alcun valore di tipo config.
SUBOPTIMALI
Soft configurato, meno ottimale di NORMAL.
HARDRECONFIG
Richiede una modifica del jumper per riconfigurare.
CABLATA
Non è possibile apportare modifiche.
RESTART
Richiede l'applicazione del riavvio.
RIAVVIARE
Questo è lo stesso di RESTART.
POWEROFF
Richiede che il ciclo di alimentazione sia effettivo.
DISABLED
Hardware/dispositivo disabilitato.
DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DmAattrs è facoltativo se il dispositivo è connesso a un bus con solo canali DMA a 8 bit e il dispositivo usa DMA di sistema standard. In caso contrario, può essere una delle lettere seguenti:
Lettera | Significato |
---|---|
D | DMA a 32 bit |
W | DMA a 16 bit |
N | DMA a 8 bit |
Se il dispositivo usa DMA master del bus, è necessario usare M con una delle lettere seguenti (che si escludono a vicenda) che indica il tipo di canale DMA usato: A, B o F. Se non viene specificato alcun canale A, B o F , si presuppone un canale DMA standard.
DMANum specifica uno o più canali DMA relativi al bus come numeri decimali, ognuno separato dal successivo da una virgola (,).
IOConfig=io-range[,io-range]...
Specifica uno o più intervalli di porte di I/O per il dispositivo, in uno dei formati seguenti:
start-end[([decode-mask][:alias-offset][:attr])] (Intervallo di I/O di tipo 1)
start
Specifica l'indirizzo iniziale dell'intervallo di porte di I/O come indirizzo esadecimale a 64 bit.
end
Specifica l'indirizzo finale dell'intervallo di porte di I/O, anche come indirizzo esadecimale a 64 bit.
decode-mask
Definisce il tipo di alias e può essere uno dei seguenti:
Valore della maschera | significato | valore IOR_Alias |
---|---|---|
3ff | Decodifica a 10 bit | 0x04 |
fff | Decodifica a 12 bit | 0x10 |
ffff | Decodifica a 16 bit | 0x00 |
0 | Decodifica positiva | 0xFF |
alias-offset
Non utilizzato.
attr
Specifica la lettera M se l'intervallo specificato è in memoria di sistema. Se omesso, l'intervallo specificato si trova nello spazio delle porte di I/O.
size@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Tipo 2 intervallo di I/O)
size
Specifica il numero di byte necessari per l'intervallo di porte di I/O come valore esadecimale a 32 bit.
min
Specifica l'indirizzo iniziale più basso possibile dell'intervallo di porte di I/O come indirizzo esadecimale a 64 bit.
max
Specifica l'indirizzo finale più alto possibile dell'intervallo di porte di I/O come indirizzo esadecimale a 64 bit.
align-mask
Facoltativamente, specifica una maschera a 64 bit usata in un'operazione AND bit per bit per allineare l'inizio dell'intervallo di porte di I/O su un limite di indirizzi integrale (in genere a 32 bit o a 64 bit).
decode-mask
Definisce il tipo di alias e può essere uno dei seguenti:
Valore della maschera | significato | valore IOR_Alias |
---|---|---|
3ff | Decodifica a 10 bit | 0x04 |
fff | Decodifica a 12 bit | 0x10 |
ffff | Decodifica a 16 bit | 0x00 |
0 | Decodifica positiva | 0xFF |
alias-offset
Non utilizzato.
attr
Specifica la lettera M se l'intervallo specificato è in memoria di sistema. Se omesso, l'intervallo specificato si trova nello spazio delle porte di I/O.
MemConfig=mem-range[,mem-range]...
Specifica uno o più intervalli di memoria per il dispositivo in uno dei formati seguenti:
start-end[(attr)] | size@min-max[%align-mask][(attr)]
start
Specifica l'indirizzo fisico iniziale (relativo al bus) dell'intervallo di memoria del dispositivo come valore esadecimale a 64 bit.
end
Specifica l'indirizzo fisico finale dell'intervallo di memoria, anche come valore esadecimale a 64 bit.
attr
Specifica gli attributi dell'intervallo di memoria come una o più delle lettere seguenti:
Lettera | Significato |
---|---|
R | Sola lettura |
W | Sola scrittura |
RW | Lettura/scrittura |
C | Scrittura combinata consentita |
H | Inseribile nella cache |
F | Preletturabile |
D | L'indirizzamento della decodifica delle schede è a 32 bit, anziché a 24 bit |
Se vengono specificati sia R che W o se nessuno dei due elementi è specificato, verrà utilizzato il valore di lettura/scrittura.
size
Specifica il numero di byte necessari nell'intervallo di memoria come valore esadecimale a 32 bit.
min
Specifica l'indirizzo iniziale più basso possibile dell'intervallo di memoria del dispositivo come valore esadecimale a 64 bit.
max
Specifica l'indirizzo finale più alto possibile dell'intervallo di memoria come valore esadecimale a 64 bit.
align-mask
Facoltativamente, specifica una maschera a 64 bit usata in un'operazione AND bit per bit per allineare l'inizio dell'intervallo di memoria del dispositivo su un limite di indirizzi integrale (in genere a 64 bit).
Se align-mask viene omesso, l'allineamento predefinito della memoria si trova su un limite 4K (FFFFF000).
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IrQattrs viene omesso se il dispositivo usa un IRQ con trigger perimetrale relativo al bus. In caso contrario, specificare L per indicare un runtime di integrazione attivato a livello e LS se il dispositivo può condividere le righe IRQ elencate in questa voce.
IRQNum specifica uno o più irQs relativi al bus che il dispositivo può usare come numeri decimali, ognuno separato dal successivo da una virgola (,).
PcCardConfig ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]=
Configura i registri CardBus e/o crea fino a due finestre di memoria permanenti che eseguono il mapping allo spazio degli attributi del dispositivo. Un driver può usare le finestre di memoria per accedere allo spazio degli attributi da un ISR. Specificare tutti i valori numerici in formato esadecimale.
Gli elementi di una voce PcCardConfig sono i seguenti:
ConfigIndex
Specifica l'indice di configurazione PCMCIA a 8 bit per un dispositivo in un bus PCMCIA.
MemoryCardBase1
Facoltativamente, specifica un indirizzo di base a 32 bit per una prima finestra di memoria.
MemoryCardBase2
Facoltativamente, specifica un indirizzo di base a 32 bit per una seconda finestra di memoria.
attrs
Facoltativamente, specifica uno o più attributi per il dispositivo, separati da spazi. Un identificatore di attributo non valido invalida l'intera voce PcCardConfig . Se vengono forniti più identificatori per un attributo specifico, gli attributi vengono applicati a singole finestre di I/O o memoria per il dispositivo. Se viene fornito un solo identificatore, tale attributo viene applicato a tutte le finestre (vedere l'esempio seguente).
In particolare, se vengono forniti più identificatori, il primo identificatore trovato leggendo da sinistra a destra verrà applicato alla prima finestra e l'identificatore successivo applicato alla seconda finestra. Un massimo di due finestre di I/O e due finestre di memoria possono essere controllate da una singola voce PcCardConfig . Se il dispositivo ha più di due finestre di memoria, deve essere inclusa una seconda voce PcCardConfig .
Gli attributi includono:
Attributo | Descrizione |
---|---|
W | Percorso dati I/O a 16 bit. Il valore predefinito è a 8 bit se INF specifica una direttiva LogConfig . Se non viene specificata alcuna direttiva LogConfig , il driver usa I/O a 16 bit. |
Sn | ~IOCS16 source. Se n è 0, ~IOCS16 si basa sul valore del bit datasize. Se n è 1, ~IOCS16 si basa sul segnale ~IOIS16 dal dispositivo. Il valore predefinito è S1. |
Zn | I/O a 8 bit, zero stato di attesa. Se n è 1, gli accessi di I/O a 8 bit si verificano con zero stati di attesa aggiuntivi. Se n è 0, l'accesso viene eseguito con altri stati di attesa. Questo flag non ha alcun significato per l'I/O a 16 bit. Il valore predefinito è Z0. |
Xln | Stati di attesa di I/O. Se n è 1, si verificano accessi di sistema a 16 bit con uno stato di attesa aggiuntivo. Il valore predefinito è Xl1. |
M | Percorso dei dati di memoria a 16 bit. Il valore predefinito è a 8 bit. |
M8 | Percorso dei dati di memoria a 8 bit. |
XMn | Stati di attesa della memoria, dove n può essere 0, 1, 2 o 3. Questo valore determina il numero di stati di attesa aggiuntivi per gli accessi a 16 bit a una finestra di memoria. Il valore predefinito è XM3. |
A | Intervallo di memoria di cui eseguire il mapping come memoria attributo. |
C | Intervallo di memoria di cui eseguire il mapping come Memoria comune (impostazione predefinita). |
Ad esempio, un valore attrs di (WB CA M XM1 XI0) viene convertito nel modo seguente:
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)]...=
Specifica il percorso di memoria degli attributi del set di registri di configurazione per una funzione di un dispositivo multifunzione, come indicato di seguito:
ConfigRegBase
Specifica l'offset dell'attributo dei registri di configurazione per questa funzione del dispositivo multifunzione.
ConfigOptions
Specifica il registro dell'opzione di configurazione PCMCIA a 8 bit.
IoResourceIndex
Specifica l'indice della voce IOConfig da usare per il driver del bus nella programmazione della base di I/O di configurazione e dei registri dei limiti. Questo indice è in base zero, ovvero zero indica la voce IOConfig iniziale in questa sezione log-config-section.
attrs
Se impostato sulla lettera A, indirizza il driver del bus PCMCIA ad attivare l'abilitazione audio nella configurazione e nei registri di stato.
Ogni voce MfCardConfig fornisce informazioni su una singola funzione del dispositivo multifunzione. Quando un set di direttive LogConfig fa riferimento a una sezione log-config-section discreta nella DDInstall di INF. La sezione LogConfigOverride, ogni sezione log-config-section deve avere le relative voci, incluse le voci MfCardConfig, elencate nello stesso ordine.
Osservazioni:
È possibile specificare una direttiva LogConfig in qualsiasi sezione INF DDInstall per ogni produttore o INF DDInstall. Sezione LogConfigOverride.
Un INF per un dispositivo non PnP che supporta diverse configurazioni logiche alternative definisce in genere un set di sezioni log-config-section in una sezione DDInstall. Ogni log-config-section specifica un set discreto di risorse di configurazione logiche. Include anche una voce ConfigPriority , che classifica ogni configurazione logica in base ai relativi effetti sulle prestazioni del dispositivo e del driver, sulla facilità di inizializzazione e così via.
Per i dispositivi PnP, il gestore PnP assegna un set di risorse hardware logiche a ogni dispositivo PnP. Ovvero, il gestore PnP esegue una query sui driver del bus di sistema, riceve i report delle risorse di configurazione del bus di I/O per dispositivo in uso e assegna set per dispositivo di risorse hardware logiche per ottenere il miglior bilanciamento a livello di sistema nell'utilizzo di tutte queste risorse.
Di conseguenza, la direttiva LogConfig in una sezione DDInstall viene ignorata per i dispositivi PnP. Per eseguire l'override delle risorse segnalate dal bus per un dispositivo PnP, includere la direttiva LogConfig in una DDInstall. Sezione LogConfigOverride. In questo caso, le risorse specificate nella sezione log-config-vengono usate anziché quelle segnalate dal bus.
Le estensioni della piattaforma possono essere aggiunte a una sezione DDInstall che contiene una direttiva LogConfig o a una DDInstall. Sezione LogConfigOverride per specificare configurazioni logiche specifiche della piattaforma o specifiche del sistema operativo. Per altre informazioni, vedere Creazione di un file INF.
Un determinato nome di sezione log-config-deve essere univoco per il file INF, ma può essere fatto riferimento dalle direttive LogConfig in altre sezioni INF DDInstall per gli stessi dispositivi. Ogni nome di sezione creato da INF-writer deve essere univoco all'interno del file INF e deve seguire le regole generali per la definizione dei nomi di sezione. Per altre informazioni su queste regole, vedere Regole di sintassi generali per i file INF.
In ogni sezione log-config-config-section può essere usata una sola voce ConfigPriority. Possono essere presenti più voci, a seconda dei requisiti delle risorse hardware del dispositivo.
Una o più voci MfCardConfig= possono essere visualizzate solo in una sezione log-config-a cui fa riferimento una direttiva LogConfig in DDInstall. Sezione LogConfigOverride di un INF per un dispositivo multifunzione. Per altre informazioni sui file INF per i dispositivi multifunzione, vedere Supporto di dispositivi multifunzione.
Voci e valori di sezione a cui si fa riferimento LogConfig
Da una sezione log-config-, il programma di installazione di sistema compila i record di configurazione logica binaria e li archivia nel Registro di sistema.
Un file INF può contenere un numero qualsiasi di sezioni log-config-per dispositivo. Tuttavia, ogni sezione deve contenere informazioni complete per l'installazione di un dispositivo. In generale, INF deve specificare le voci in ognuna delle relative sezioni log-config-nello stesso ordine. InF deve specificare ogni set di voci nell'ordine più adatto alla modalità di inizializzazione del dispositivo da parte del driver.
Se sono presenti più sezioni log-config-section per un determinato dispositivo, durante l'installazione viene usata solo una di queste sezioni INF. Un file INF di questo tipo controlla parzialmente quale sezione viene usata con il valore ConfigPriority fornito in ogni sezione log-config-section. Ovvero, i programmi di installazione di sistema tentano di rispettare le priorità di configurazione in un file INF, ma potrebbero selezionare una configurazione logica con classificazione inferiore se viene trovato un conflitto con un dispositivo già installato.
Durante l'installazione, viene selezionata e assegnata a un determinato dispositivo una sola risorsa di ogni voce in una determinata sezione log-config-section . Se un particolare dispositivo richiede più di una risorsa dello stesso tipo, è necessario usare un set di voci di tale tipo nelle relative sezioni log-config-sections.
Ad esempio, per garantire due intervalli di porte di I/O per un determinato dispositivo, è necessario specificare due voci IOConfig= nella sezione log-config-section per tale dispositivo. D'altra parte, se un dispositivo non richiede irQ, il relativo INF può omettere la voce IRQConfig dalle sezioni log-config-sections.
Esempi
Questo esempio mostra alcune voci PcCardConfig valide per un dispositivo PCMCIA.
PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)
Questo esempio mostra una specifica dell'intervallo di I/O di tipo 1 in una voce IOConfig . Specifica un'area porta di I/O, otto byte di dimensioni, che possono iniziare da 1F8, 2F8 o 3F8.
IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
In questo esempio viene invece illustrata una specifica dell'intervallo di I/O di tipo 2 in una voce IOConfig . Specifica un'area della porta di I/O, otto byte di dimensioni, che possono iniziare da 300, 308, 310, 318, 320 o 328.
IOConfig=8@300-32F%FF8
Questo esempio mostra un set di voci IOConfig per un dispositivo a quattro porte, ognuna delle quali specifica un intervallo di porte di I/O scostato da 0x400 byte dal successivo.
IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f
I due esempi successivi mostrano le voci memconfig tipiche.
Questo esempio specifica un'area di memoria di 32 KB che può iniziare da C0000 o D0000.
MemConfig=C0000-C7FFF, D0000-D7FFF
Questo esempio specifica un'area di memoria di 32.000 byte a partire dai limiti di 64.000.
MemConfig=8000@C0000-D7FFF%F0000
Questo esempio mostra come il file INF della classe HDC di sistema configura diverse sezioni log-config-sections per controller disco rigido ESDI generici e usa un DDInstall. Sezione LogConfigOverride per un controller IDE specifico.
[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)
Per alcuni esempi di utilizzo delle voci MfCardConfig , vedere Supporto delle schede PC con indirizzi di registro di configurazione incompleti.