Directive INF LogConfig
Attention
À partir de la version 22H2 de Windows 11, un package de pilotes utilisant cette directive n’est plus éligible à une signature du Hardware Developer Center.
Les packages de pilotes universels et les pilotes Windows ne peuvent pas utiliser cette directive.
Une directive LogConfig fait référence à une ou plusieurs sections définies par l’écrivain INF, chacune spécifiant une configuration logique de ressources matérielles − les lignes de demande d’interruption, les plages de mémoire, les ports d’E/S et les canaux DMA qui peuvent être utilisés par le périphérique. Chaque log-config-section spécifie un ensemble alternatif de ressources matérielles relatives au bus qui peuvent être utilisées par le périphérique.
[DDInstall] |
[DDInstall.LogConfigOverride]
LogConfig=log-config-section[,log-config-section]...
Les fichiers INF pour les périphériques non PnP utilisent cette directive pour créer des configurations de base.
Les fichiers INF pour les périphériques PnP utilisent cette directive uniquement pour créer des configurations de substitution.
Chaque section nommée référencée par une directive LogConfig a la forme suivante :
[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
Spécifie la valeur de priorité pour cette configuration logique, en tant que l’une des suivantes :
DESIRED
Configuration logicielle, la plus optimale.
NORMAL
Configuration logicielle, moins optimale que DÉSIRÉE. C’est le réglage typique.
NORMAL doit être spécifié si la log-config-section a été définie dans une section DDInstall.LogConfigOverride, et aucune valeur config-type ne peut être spécifiée.
SUBOPTIMAL
Configuration logicielle, moins optimale que NORMAL.
HARDRECONFIG
Nécessite un changement de cavalier pour être reconfiguré.
HARDWIRED
Modification impossible.
RESTART
Nécessite un redémarrage pour prendre effet.
REBOOT
C’est la même chose que RESTART.
POWEROFF
Nécessite un cycle d’alimentation pour prendre effet.
DISABLED
Le matériel/périphérique est désactivé.
DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs est facultatif si le périphérique est connecté sur un bus qui ne possède que des canaux DMA 8 bits et si le périphérique utilise le DMA standard du système. Sinon, cela peut être l’une des lettres suivantes :
Lettre | Signification |
---|---|
D | DMA 32 bits |
W | DMA 16 bits |
N | DMA 8 bits |
Si le périphérique utilise le DMA maître de bus, vous devez utiliser M avec l’une des lettres suivantes (mutuellement exclusives) qui indique le type de canal DMA utilisé : A, B ou F. Si ni A, ni B, ni F ne sont spécifiés, un canal DMA standard est supposé.
DMANum spécifie un ou plusieurs canaux DMA relatifs au bus sous forme de nombres décimaux, chacun séparé du suivant par une virgule (,).
IOConfig=io-range[,io-range]...
Spécifie une ou plusieurs plages de ports d’E/S pour le périphérique, sous l’une des formes suivantes :
start-end[([decode-mask][:alias-offset][:attr])] (Plage d’E/S Type 1)
start
Spécifie l’adresse de départ de la plage de ports d’E/S sous forme d’adresse hexadécimale sur 64 bits.
end
Spécifie l’adresse de fin de la plage de ports d’E/S, également sous forme d’adresse hexadécimale sur 64 bits.
decode-mask
Définit le type d’alias et peut être l’un des suivants :
Valeur du masque | Signification | Valeur d’alias IOR |
---|---|---|
3ff | Décodage 10 bits | 0x04 |
fff | Décodage 12 bits | 0x10 |
ffff | Décodage 16 bits | 0x00 |
0 | Décodage positif | 0xFF |
alias-offset
Aucun affichage.
attr
Spécifie la lettre M si la plage donnée est en mémoire système. Si omis, la plage donnée est dans l’espace de ports d’E/S.
size@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Plage d’E/S Type 2)
size
Spécifie le nombre d’octets requis pour la plage de ports d’E/S sous forme de valeur hexadécimale sur 32 bits.
min
Spécifie l’adresse de départ la plus basse possible de la plage de ports d’E/S sous forme d’adresse hexadécimale sur 64 bits.
max
Spécifie l’adresse de fin la plus haute possible de la plage de ports d’E/S sous forme d’adresse hexadécimale sur 64 bits.
align-mask
Spécifie éventuellement un masque de 64 bits qui est utilisé dans une opération ET au niveau des bits pour aligner le début de la plage de ports d’E/S sur une limite d’adresse entière (généralement 32 bits ou 64 bits).
decode-mask
Définit le type d’alias et peut être l’un des suivants :
Valeur du masque | Signification | Valeur d’alias IOR |
---|---|---|
3ff | Décodage 10 bits | 0x04 |
fff | Décodage 12 bits | 0x10 |
ffff | Décodage 16 bits | 0x00 |
0 | Décodage positif | 0xFF |
alias-offset
Aucun affichage.
attr
Spécifie la lettre M si la plage donnée est en mémoire système. Si omis, la plage donnée est dans l’espace de ports d’E/S.
MemConfig=mem-range[,mem-range]...
Spécifie une ou plusieurs plages de mémoire pour le périphérique sous l’une des formes suivantes :
start-end[(attr)] | size@min-max[%align-mask][(attr)]
start
Spécifie l’adresse physique de départ (relative au bus) de la plage de mémoire du périphérique sous forme de valeur hexadécimale sur 64 bits.
end
Spécifie l’adresse physique de fin de la plage de mémoire, également sous forme de valeur hexadécimale sur 64 bits.
attr
Spécifie les attributs de la plage de mémoire sous forme d’une ou plusieurs lettres suivantes :
Lettre | Signification |
---|---|
R | Lecture seule |
W | Écriture seule |
RW | Lecture/écriture |
C | Écriture combinée autorisée |
H | Pouvant être mis en cache |
F | Préfetchable |
D | Le décodage des adresses de la carte est en 32 bits, au lieu de 24 bits. |
Si les lettres R et W sont spécifiées ou si aucune n’est spécifiée, lecture/écriture est supposée.
size
Spécifie le nombre d’octets requis dans la plage de mémoire sous forme de valeur hexadécimale sur 32 bits.
min
Spécifie l’adresse de départ la plus basse possible de la plage de mémoire du périphérique sous forme d’adresse hexadécimale sur 64 bits.
max
Spécifie l’adresse de fin la plus haute possible de la plage de mémoire sous forme d’adresse hexadécimale sur 64 bits.
align-mask
Spécifie éventuellement un masque de 64 bits qui est utilisé dans une opération ET au niveau des bits pour aligner le début de la plage de mémoire du périphérique sur une limite d’adresse entière (généralement 64 bits).
Si align-mask est omis, l’alignement mémoire par défaut se fait sur une limite de 4K (FFFFF000).
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs est omis si le périphérique utilise un IRQ relatif au bus à déclenchement par front. Sinon, spécifiez L pour indiquer une IRQ à déclenchement par niveau et LS si le périphérique peut partager les lignes IRQ répertoriées dans cette entrée.
IRQNum spécifie une ou plusieurs IRQ relatives au bus que le périphérique peut utiliser sous forme de nombres décimaux, chacun séparé du suivant par une virgule (,).
PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Configure les registres CardBus et/ou crée jusqu’à deux fenêtres mémoire permanentes qui mappent à l’espace attribut du périphérique. Un pilote peut utiliser les fenêtres mémoire pour accéder à l’espace attribut à partir d’un ISR. Spécifiez toutes les valeurs numériques au format hexadécimal.
Les éléments d’une entrée PcCardConfig sont les suivants :
ConfigIndex
Spécifie l’index de configuration PCMCIA sur 8 bits pour un périphérique sur un bus PCMCIA.
MemoryCardBase1
Spécifie éventuellement une adresse de base sur 32 bits pour une première fenêtre mémoire.
MemoryCardBase2
Spécifie éventuellement une adresse de base sur 32 bits pour une deuxième fenêtre mémoire.
attrs
Spécifie éventuellement un ou plusieurs attributs pour le périphérique, séparés par des espaces. Un spécificateur d’attribut invalide invalide toute l’entrée PcCardConfig. Si plusieurs spécificateurs sont fournis pour un attribut particulier, les attributs sont appliqués à des fenêtres d’E/S ou de mémoire individuelles pour le périphérique. Si un seul spécificateur est fourni, cet attribut est appliqué à toutes les fenêtres (voir l’exemple suivant).
Plus précisément, si plusieurs spécificateurs sont fournis, le premier spécificateur trouvé en lisant de gauche à droite sera appliqué à la première fenêtre, et le spécificateur suivant sera appliqué à la deuxième fenêtre. Un maximum de deux fenêtres d’E/S et deux fenêtres mémoire peuvent être contrôlées par une seule entrée PcCardConfig. Si le périphérique possède plus de deux fenêtres mémoire, une deuxième entrée PcCardConfig doit être incluse.
Les attributs incluent :
Attribut | Description |
---|---|
W | Chemin de données d’E/S sur 16 bits. La valeur par défaut est de 8 bits si le fichier INF spécifie une directive LogConfig. Si aucune directive LogConfig n’est spécifiée, le pilote utilise des E/S 16 bits. |
Sn | ~IOCS16 source. Si n vaut 0, ~IOCS16 est basé sur la valeur du bit de taille de données. Si n est 1, ~IOCS16 est basé sur le signal ~IOIS16 du périphérique. La valeur par défaut est S1. |
Zn | E/S 8 bits, zéro temps d’attente. Si n vaut 1, les accès en E/S 8 bits se font sans temps d’attente supplémentaire. Si n vaut 0, l’accès se fait avec des temps d’attente supplémentaires. Cet indicateur n’a aucune signification pour les E/S 16 bits. La valeur par défaut est Z0. |
Xln | Temps d’attente en E/S. Si n vaut 1, les accès système 16 bits se font avec un temps d’attente supplémentaire. La valeur par défaut est Xl1. |
M | Chemin de données mémoire sur 16 bits. La valeur par défaut est de 8 bits. |
M8 | Chemin de données mémoire sur 8 bits. |
XMn | Temps d’attente en mémoire, où n peut être 0, 1, 2 ou 3. Cette valeur détermine le nombre de temps d’attente supplémentaires pour les accès 16 bits à une fenêtre mémoire. La valeur par défaut est XM3. |
A | Plage de mémoire à mapper comme mémoire d’attribut. |
C | Plage de mémoire à mapper comme mémoire commune (valeur par défaut). |
Par exemple, une valeur d’attributs de (WB CA M XM1 XI0) se traduit par ce qui suit :
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)]...
Spécifie l’emplacement en mémoire d’attribut du jeu de registres de configuration pour une fonction d’un périphérique multifonction, comme suit :
ConfigRegBase
Spécifie le décalage des attributs des registres de configuration pour cette fonction du périphérique multifonction.
ConfigOptions
Spécifie le registre d’options de configuration PCMCIA sur 8 bits.
IoResourceIndex
Spécifie l’index de l’entrée IOConfig que le pilote de bus doit utiliser pour programmer les registres de base et de limite de configuration d’E/S. Cet index est basé sur zéro, c’est-à-dire que zéro désigne l’entrée initiale IOConfig dans cette log-config-section.
attrs
Si la lettre A est définie, cela indique au pilote de bus PCMCIA d’activer l’audio dans les registres de configuration et de statut.
Chaque entrée MfCardConfig fournit des informations sur une seule fonction du périphérique multifonction. Lorsqu’un ensemble de directives LogConfig fait référence à une section log-config-section distincte dans la section DDInstall.LogConfigOverride du fichier INF, chaque log-config-section doit avoir ses entrées, y compris les entrées MfCardConfig, listées dans le même ordre.
Notes
Une directive LogConfig peut être spécifiée sous n’importe quelle section INF DDInstall par fabricant ou par modèles ou dans la section INF DDInstall.LogConfigOverride.
Un fichier INF pour un périphérique non PnP qui prend en charge plusieurs configurations logiques alternatives définit généralement un ensemble de log-config-sections sous une section DDInstall. Chaque log-config-section spécifie un ensemble distinct de ressources de configuration logiques. Elle inclut également une entrée ConfigPriority, qui classe chaque configuration logique en fonction de ses effets sur les performances du périphérique et du pilote, la facilité d’initialisation, etc.
Pour les périphériques PnP, le gestionnaire PnP attribue un ensemble de ressources matérielles logiques à chaque périphérique PnP. Autrement dit, le gestionnaire PnP interroge les pilotes de bus du système, reçoit leurs rapports sur les ressources de configuration de bus E/S par périphérique utilisées, et attribue des ensembles de ressources matérielles logiques par périphérique afin d’atteindre le meilleur équilibre possible à l’échelle du système dans l’utilisation de toutes ces ressources.
Par conséquent, la directive LogConfig sous une section DDInstall est ignorée pour les périphériques PnP. Pour remplacer les ressources rapportées par le bus pour un périphérique PnP, incluez la directive LogConfig sous une section DDInstall.LogConfigOverride. Dans ce cas, les ressources spécifiées dans la log-config-section sont utilisées à la place de celles rapportées par le bus.
Des extensions de plateforme peuvent être ajoutées à une section DDInstall qui contient une directive LogConfig, ou à une section DDInstall.LogConfigOverride, pour spécifier des configurations logiques spécifiques à la plateforme ou au système d’exploitation. Pour plus d’informations, veuillez consulter la section Création d’un fichier INF.
Un nom log-config-section donné doit être unique dans le fichier INF, mais il peut être référencé par des directives LogConfig dans d’autres sections DDInstall INF pour les mêmes périphériques. Chaque nom de section créé par l’auteur de l’INF doit être unique dans le fichier INF et doit suivre les règles générales pour définir des noms de section. Pour plus d'informations sur ces règles, voir Règles générales de syntaxe pour les fichiers INF.
Une seule entrée ConfigPriority peut être utilisée dans chaque log-config-section. Il peut y avoir plus d’une entrée de chaque autre type, selon les besoins en ressources matérielles du périphérique.
Une ou plusieurs entrées MfCardConfig= ne peuvent apparaître que dans une log-config-section référencée par une directive LogConfig dans la section DDInstall.LogConfigOverride d’un fichier INF pour un périphérique multifonction. Pour plus d’informations sur les fichiers INF pour les périphériques multifonctions, veuillez consulter la section Prise en charge des périphériques multifonctions.
Entrées et valeurs de section référencées par LogConfig
À partir d’une log-config-section, l’installateur système construit des enregistrements de configuration logique binaires et les stocke dans le registre.
Un fichier INF peut contenir un nombre quelconque de log-config-sections par périphérique. Cependant, chaque section doit contenir des informations complètes pour installer un périphérique. En général, le fichier INF doit spécifier les entrées de chacune de ses log-config-sections dans le même ordre. Le fichier INF doit spécifier chaque ensemble d’entrées dans l’ordre le plus approprié à la façon dont le pilote initialise son périphérique.
Si plus d’une log-config-section est présente pour un périphérique donné, une seule de ces sections INF est utilisée lors de l’installation. Un tel fichier INF contrôle partiellement quelle section est utilisée avec la valeur ConfigPriority qu’il fournit dans chaque log-config-section. Autrement dit, les installateurs système tentent de respecter les priorités de configuration dans un fichier INF, mais peuvent sélectionner une configuration logique de rang inférieur si un conflit avec un périphérique déjà installé est détecté.
Lors de l’installation, une seule et unique ressource de chaque entrée dans une log-config-section donnée est sélectionnée et affectée à un périphérique particulier. Si un périphérique particulier a besoin de plus d’une ressource du même type, un ensemble d’entrées de ce type doit être utilisé dans ses log-config-sections.
Par exemple, pour garantir deux plages de ports d’E/S pour un périphérique particulier, deux entrées IOConfig= doivent être spécifiées dans la log-config-section pour ce périphérique. En revanche, si un périphérique ne nécessite pas d’IRQ, son fichier INF peut omettre l’entrée IRQConfig des log-config-sections.
Exemples
Cet exemple montre quelques entrées valides PcCardConfig pour un périphérique PCMCIA.
PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)
Cet exemple montre une spécification de plage d’E/S Type 1 dans une entrée IOConfig. Elle spécifie une région de ports d’E/S, de huit octets de taille, qui peut commencer à 1F8, 2F8 ou 3F8.
IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
En revanche, cet exemple montre une spécification de plage d’E/S Type 2 dans une entrée IOConfig. Elle spécifie une région de ports d’E/S, de huit octets de taille, qui peut commencer à 300, 308, 310, 318, 320 ou 328.
IOConfig=8@300-32F%FF8
Cet exemple montre un ensemble d’entrées IOConfig pour un périphérique à quatre ports, chacune spécifiant une plage de ports d’E/S décalée de 0x400 octets par rapport à la suivante.
IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f
Les deux exemples suivants montrent des entrées MemConfig typiques.
Cet exemple spécifie une région mémoire de 32K octets qui peut commencer soit à C0000 soit à D0000.
MemConfig=C0000-C7FFF, D0000-D7FFF
Cet exemple spécifie une région mémoire de 32k octets commençant sur des limites de 64K.
MemConfig=8000@C0000-D7FFF%F0000
Cet exemple montre comment le fichier INF de la classe HDC du système configure plusieurs log-config-sections pour des contrôleurs de disque dur ESDI génériques et utilise une section DDInstall.LogConfigOverride pour un contrôleur IDE particulier.
[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)
Pour quelques exemples d’utilisation des entrées MfCardConfig, veuillez consulter la section Prise en charge des cartes PC dont les adresses de registre de configuration sont incomplètes.