Diretiva INF LogConfig

Caution

A partir do Windows 11 versão 22H2, um pacote de drivers que utilize esta diretiva deixa de ser elegível para assinatura do Hardware Developer Center.

Os pacotes universais de drivers e os drivers do Windows não podem usar esta diretiva.

Uma diretiva LogConfig refere-se a uma ou mais secções definidas pelo escritor INF, cada uma das quais especifica uma configuração lógica de recursos de hardware − as linhas de pedido de interrupção, intervalos de memória, portas de E/S e canais DMA que podem ser usados pelo dispositivo. Cada secção log-config especifica um conjunto alternativo de recursos de hardware relativos ao barramento que podem ser usados pelo dispositivo.

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

Ficheiros INF para dispositivos não-PnP utilizam esta diretiva para criar configurações básicas.

Os ficheiros INF para dispositivos PnP usam esta diretiva apenas para criar configurações de sobreposição.

Cada secção nomeada referenciada por uma diretiva LogConfig tem a seguinte forma:

[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)]...]
...

Entradas

Prioridade de Configuração=Valor de prioridade
Especifica o valor de prioridade para esta configuração lógica, como um dos seguintes:

DESEJADO
Configuração suave, o mais ótimo.

NORMAL
Configuração suave, menos otimizada do que DESEJADO. Este é o cenário típico.

NORMAL deve ser especificado se a secção log-config-section estiver definida num DDInstall. LogConfigOverride , e não pode ser especificado nenhum valor de type config.

SUBÓTIMO
Configuração suave, menos otimizada do que o NORMAL.

HARDRECONFIG
Requer uma mudança de jumper para reconfigurar.

FIXO
Não pode ser alterado.

REINICIAR
É necessário reiniciar para ter efeito.

REINÍCIO
Isto é o mesmo que REINICIAR.

DESLIGAMENTO
Requer que o ciclo de energia tenha efeito.

DISABLED
O hardware/dispositivo está desativado.

DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
O DMAattrs é opcional se o dispositivo estiver ligado a um barramento que tenha apenas canais DMA de 8 bits e o dispositivo usar DMA padrão do sistema. Caso contrário, pode ser uma das seguintes letras:

Carta Meaning
D DMA de 32 bits
W DMA de 16 bits
N DMA de 8 bits

Se o dispositivo usar DMA bus-master, deve usar M com uma das seguintes letras (mutuamente exclusivas) que indicam o tipo de canal DMA utilizado: A, B ou F. Se nem A, B nem F forem especificados, assume-se um canal DMA padrão.

O DMANum especifica um ou mais canais DMA relativos ao barramento como números decimais, cada um separado do seguinte por uma vírgula (,).

IOConfig=io-range[,io-range]...
Especifica um ou mais intervalos de portas de E/S para o dispositivo, em qualquer uma das seguintes formas:

início-fim[([descodificar-máscara][:deslocamento-alias][:attr])] (Alcance de E/S Tipo 1)

Início
Especifica o endereço inicial da gama de portas de E/S como um endereço hexadecimal de 64 bits.

fim
Especifica o endereço final da gama de portas de E/S, também como um endereço hexadecimal de 64 bits.

descodificar máscara
Define o tipo de alias e pode ser qualquer um dos seguintes:

Valor da máscara Meaning IOR_Alias valor
3ff Decodificação de 10 bits 0x04
fff Decodificação de 12 bits 0x10
FFFF Decodificação de 16 bits 0x00
0 Decodificação positiva 0xFF

Alias-offset
Não utilizado.

attr
Especifica a letra M se o intervalo dado estiver na memória do sistema. Se omitido, o intervalo dado está no espaço de portas de E/S.

tamanho@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Intervalo de I/O Tipo 2)

tamanho
Especifica o número de bytes necessários para o intervalo de portas de E/S como um valor hexadecimal de 32 bits.

min
Especifica o endereço inicial mais baixo possível do intervalo de portas de E/S como um endereço hexadecimal de 64 bits.

max
Especifica o endereço final mais alto possível da gama de portas de E/S como um endereço hexadecimal de 64 bits.

Alinhar-máscara
Opcionalmente, especifica uma máscara de 64 bits que é usada numa operação AND bit a bit para alinhar o início da gama de portas de E/S numa fronteira de endereço integral (normalmente de 32 bits ou 64 bits).

descodificar máscara
Define o tipo de alias e pode ser qualquer um dos seguintes:

Valor da máscara Meaning IOR_Alias valor
3ff Decodificação de 10 bits 0x04
fff Decodificação de 12 bits 0x10
FFFF Decodificação de 16 bits 0x00
0 Decodificação positiva 0xFF

Alias-offset
Não utilizado.

attr
Especifica a letra M se o intervalo dado estiver na memória do sistema. Se omitido, o intervalo dado está no espaço de portas de E/S.

MemConfig=Mem-range[,mem-range]...
Especifica uma ou mais faixas de memória para o dispositivo numa das seguintes formas:

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

Início
Especifica o endereço físico inicial (relativo ao barramento) do intervalo de memória do dispositivo como um valor hexadecimal de 64 bits.

fim
Especifica o endereço físico final do intervalo de memória, também como um valor hexadecimal de 64 bits.

attr
Especifica os atributos do intervalo de memória como uma ou mais das seguintes letras:

Carta Meaning
R Read-only
W Write-only
RW Leitura/escrita
C Escrita combinada permitida
H Cacheável
F Pré-buscado
D Endereçamento de decodificação de cartões é de 32 bits, em vez de 24 bits

Se ambos forem especificados R e W ou se nenhum for especificado, assume-se leitura/escrita.

tamanho
Especifica o número de bytes necessários no intervalo de memória como um valor hexadecimal de 32 bits.

min
Especifica o endereço inicial mais baixo possível do intervalo de memória do dispositivo como um valor hexadecimal de 64 bits.

max
Especifica o endereço final mais alto possível do intervalo de memória como um valor hexadecimal de 64 bits.

Alinhar-máscara
Opcionalmente, especifica uma máscara de 64 bits que é usada numa operação AND bit a bit para alinhar o início da gama de memória do dispositivo numa fronteira de endereço integral (normalmente de 64 bits).

Se a máscara de alinhamento for omitida, o alinhamento padrão da memória está numa fronteira de 4K (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
O IRQattrs é omitido se o dispositivo usar um IRQ acionado por arestas relativo ao barramento. Caso contrário, especifique L para indicar um IRQ ativado por nível e LS se o dispositivo puder partilhar as linhas IRQ listadas nesta entrada.

O IRQNum especifica um ou mais IRQs relativos ao barramento que o dispositivo pode usar como números decimais, cada um separado do seguinte por uma vírgula (,).

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Configura registos CardBus e/ou cria até duas janelas de memória permanentes que correspondem ao espaço de atributos do dispositivo. Um driver pode usar as janelas de memória para aceder ao espaço de atributos a partir de um ISR. Especifique todos os valores numéricos em formato hexadecimal.

Os elementos de uma entrada PcCardConfig são os seguintes:

ConfigIndex
Especifica o índice de configuração PCMCIA de 8 bits para um dispositivo num barramento PCMCIA.

MemoryCardBase1
Opcionalmente, especifica um endereço base de 32 bits para uma primeira janela de memória.

MemoryCardBase2
Opcionalmente, especifica um endereço base de 32 bits para uma segunda janela de memória.

atrai
Opcionalmente, especifica um ou mais atributos para o dispositivo, separados por espaços. Um especificador de atributo inválido invalida toda a entrada do PcCardConfig . Se forem fornecidos mais do que um especificador para um determinado atributo, os atributos são aplicados a janelas individuais de E/S ou memória do dispositivo. Se for fornecido apenas um especificador, esse atributo é aplicado a todas as janelas (ver o exemplo seguinte).

Especificamente, se forem fornecidos múltiplos especificadores, o primeiro especificador encontrado a ler da esquerda para a direita será aplicado à primeira janela, e o próximo especificador aplicado à segunda janela. No máximo duas janelas de I/O e duas janelas de memória podem ser controladas por uma única entrada PcCardConfig . Se o dispositivo tiver mais de duas janelas de memória, então deve ser incluída uma segunda entrada PcCardConfig .

Os atributos incluem:

Attribute Description
W Caminho de dados de E/S de 16 bits.

O padrão é de 8 bits se o INF especificar uma diretiva LogConfig . Se não for especificada uma diretiva LogConfig , o driver utiliza E/S de 16 bits.
Sn ~IOCS16 fonte.

Se n for 0, ~IOCS16 baseia-se no valor do bit de tamanho dos dados. Se n for 1, ~IOCS16 baseia-se no sinal ~IOIS16 do dispositivo. O padrão é S1.
Zn I/O 8-bit, estado de espera zero.

Se n for 1, ocorrem acessos de E/S de 8 bits sem estados adicionais de espera. Se n for 0, o acesso ocorre com estados de espera adicionais. Esta bandeira não tem significado para I/O de 16 bits. O padrão é Z0.
xln A espera de I/O declara.

Se n for 1, ocorrem acessos ao sistema de 16 bits com um estado de espera adicional. O padrão é Xl1.
M Caminho de dados de memória de 16 bits. O padrão é 8 bits.
M8 Caminho de dados de memória de 8 bits.
XMn Estados de espera por memória, onde n pode ser 0, 1, 2 ou 3.

Este valor determina o número de estados de espera adicionais para acessos de 16 bits a uma janela de memória. O padrão é o XM3.
A O intervalo de memória deve ser mapeado como memória de atributos.
C O intervalo de memória deve ser mapeado como Memória Comum (por defeito).

Por exemplo, um valor de attrs de (WB CA M XM1 XI0) traduz-se no seguinte:

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)]...
Especifica a localização de memória de atributos do conjunto de registos de configuração para uma função de um dispositivo multifunção, da seguinte forma:

ConfigRegBase
Especifica o deslocamento de atributos dos registos de configuração para esta função do dispositivo multifunção.

ConfigOptions
Especifica o registo de opção de configuração PCMCIA de 8 bits.

IoResourceIndex
Especifica o índice da entrada IOConfig para o driver do barramento usar na programação da base de I/O de configuração e dos registos limite. Este índice é baseado em zero, ou seja, o zero designa a entrada inicial do IOConfig nesta secção log-config.

atrai
Se definido para a letra A, orienta o driver do barramento PCMCIA a ativar a habilitação de áudio nos registos de configuração e estado.

Cada entrada MfCardConfig fornece informação sobre uma única função do dispositivo multifunção. Quando um conjunto de diretivas LogConfig faz referência a uma secção log-config discreta no DDInstall do INF. Secção LogConfigOverride , cada secção log-config deve ter as suas entradas, incluindo as entradas MfCardConfig , listadas na mesma ordem.

Remarks

Uma diretiva LogConfig pode ser especificada em qualquer secção INF DDInstall por fabricante e modelo ou INF DDInstall. Secção LogConfigOverride.

Um INF para um dispositivo não-PnP que suporta várias configurações lógicas alternativas normalmente define um conjunto de secções de configuração de registo sob uma secção DDInstall . Cada secção log-config especifica um conjunto discreto de recursos lógicos de configuração. Inclui também uma entrada ConfigPriority , que classifica cada configuração lógica de acordo com os seus efeitos no desempenho do dispositivo e do driver, facilidade de inicialização, e assim por diante.

Para dispositivos PnP, o gestor PnP atribui um conjunto de recursos lógicos de hardware a cada dispositivo PnP. Ou seja, o gestor PnP consulta os drivers do barramento do sistema, recebe os seus relatórios dos recursos de configuração do barramento de I/O por dispositivo em uso e atribui conjuntos por dispositivo de recursos lógicos de hardware para alcançar o melhor equilíbrio a nível do sistema na utilização de todos esses recursos.

Como resultado, a diretiva LogConfig sob uma secção DDInstall é ignorada para dispositivos PnP. Para sobrepor os recursos reportados pelo barramento para um dispositivo PnP, inclua a diretiva LogConfig sob uma secção DDInstall. Secção LogConfigOverride . Neste caso, os recursos especificados na secção log-config são usados em vez dos reportados pelo barramento.

Extensões de plataforma podem ser adicionadas a uma secção DDInstall que contenha uma diretiva LogConfig , ou a uma DDInstall. Secção LogConfigOverride , para especificar configurações lógicas específicas da plataforma ou do sistema operativo. Para mais informações, consulte Criação de um Ficheiro INF.

Um dado nome de secção log-config deve ser único para o ficheiro INF, mas pode ser referenciado por diretivas LogConfig noutras secções INF DDInstall para os mesmos dispositivos. Cada nome de secção criado pelo escritor INF deve ser único dentro do ficheiro INF e deve seguir as regras gerais para definir nomes de secção. Para mais informações sobre estas regras, consulte Regras Gerais de Sintaxe para Ficheiros INF.

Apenas uma entrada de ConfigPriority pode ser usada em cada secção log-config. Pode haver mais do que uma de cada uma das outras entradas, dependendo dos requisitos de recursos de hardware do dispositivo.

Uma ou mais entradas MfCardConfig= só podem aparecer numa secção log-config referenciada por uma diretiva LogConfig no DDInstall. Secção LogConfigOverride de um INF para um dispositivo multifunção. Para mais informações sobre ficheiros INF para dispositivos multifunções, consulte Suporte a Dispositivos Multifunções.

LogConfig-Referenced Entradas e Valores de Secção

A partir de uma secção log-config, o instalador do sistema constrói registos lógicos binários de configuração e armazena-os no registo.

Um ficheiro INF pode conter qualquer número de secções de configuração de registo por dispositivo. No entanto, cada uma dessas secções deve conter informação completa para a instalação de um dispositivo. Em geral, o INF deve especificar as entradas em cada uma das suas secções log-config na mesma ordem. O INF deve especificar cada conjunto de entradas na ordem mais adequada à forma como o driver inicializa o seu dispositivo.

Se houver mais do que uma secção de configuração log para um determinado dispositivo, apenas uma dessas secções INF é usada durante a instalação. Tal ficheiro INF controla parcialmente qual secção é usada com o valor ConfigPriority que fornece em cada log-config-section. Ou seja, os instaladores do sistema tentam respeitar quaisquer prioridades de configuração num ficheiro INF, mas podem selecionar uma configuração lógica de classificação inferior se for encontrado um conflito com um dispositivo já instalado.

Durante a instalação, um e apenas um recurso de cada entrada numa dada secção log-config é selecionado e atribuído a um dispositivo específico. Se um determinado dispositivo precisar de mais do que um recurso do mesmo tipo, um conjunto de entradas desse tipo deve ser usado nas suas secções log-config.

Por exemplo, para garantir duas faixas de portas de E/S para um determinado dispositivo, devem ser especificadas duas entradas IOConfig= na secção log-config desse dispositivo. Por outro lado, se um dispositivo não requer IRQ, o seu INF pode omitir a entrada IRQConfig das secções log-config.

Examples

Este exemplo mostra algumas entradas válidas do PcCardConfig para um dispositivo PCMCIA.

PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)

Este exemplo mostra uma especificação de intervalo de E/S Tipo 1 numa entrada do IOConfig . Especifica uma região de porta de E/S, com oito bytes de tamanho, que pode começar em 1F8, 2F8 ou 3F8.

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

Em contraste, este exemplo mostra uma especificação de intervalo de E/S Tipo 2 numa entrada do IOConfig . Especifica uma região de porta de E/S, com oito bytes de tamanho, que pode começar em 300, 308, 310, 318, 320 ou 328.

IOConfig=8@300-32F%FF8

Este exemplo mostra um conjunto de entradas IOConfig para um dispositivo de quatro portas, cada uma especificando um intervalo de portas de E/S que é deslocado em 0x400 bytes em relação ao seguinte.

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

Os dois exemplos seguintes mostram entradas típicas do MemConfig .

Este exemplo especifica uma região de memória de 32K bytes que pode começar em C0000 ou D0000.

MemConfig=C0000-C7FFF, D0000-D7FFF

Este exemplo especifica uma região de memória de 32k bytes a partir de limites de 64K.

MemConfig=8000@C0000-D7FFF%F0000

Este exemplo mostra como o ficheiro INF da classe HDC do sistema configura várias secções de configuração de registo para controladores genéricos de disco rígido ESDI e utiliza um DDInstall. Secção LogConfigOverride para um determinado controlador IDE.

[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)

Para alguns exemplos de como as entradas MfCardConfig são usadas, veja Suportar Placas PC que Têm Endereços de Registos de Configuração Incompletos.

Ver também

DDInstall

DDInstall. FactDef