Diretiva LogConfig do INF

Cuidado

A partir do Windows 11 versão 22H2, um pacote de driver que usa essa diretiva não está mais qualificado para uma assinatura do Centro de Desenvolvedores de Hardware.

Pacotes de driver universais e Drivers do Windows não podem usar essa diretiva.

Uma diretiva LogConfig faz referência a uma ou mais seções definidas pelo gravador INF, cada uma especificando uma configuração lógica de recursos de hardware – as linhas de solicitação de interrupção, intervalos de memória, portas de E/S e canais de DMA que podem ser usados pelo dispositivo. Cada log-config-section 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]...

Os arquivos INF para dispositivos não PnP usam essa diretiva para criar configurações básicas.

Os arquivos INF para dispositivos PnP usam essa diretiva apenas para criar configurações de substituição.

Cada seção nomeada referenciada por uma diretiva LogConfig tem o seguinte formato:

[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

ConfigPriority=priority-value
Especifica o valor de prioridade para essa configuração lógica, como um dos seguintes:

DESEJADO
Configurado suavemente, o mais ideal.

NORMAL
Configurado suavemente, menos ideal que DESIRED. Essa é a configuração típica.

NORMAL deve ser especificado se a seção log-config foi definida em um DDInstall. Seção LogConfigOverride e nenhum valor de tipo de configuração pode ser especificado.

SUBOPTIMAL
Configurado de forma flexível, menos ideal que NORMAL.

HARDRECONFIG
Requer uma alteração de jumper para reconfigurar.

HARDWIRED
Não pode ser alterado.

RESTART
Requer que a reinicialização entre em vigor.

REBOOT
Isso é o mesmo que RESTART.

POWEROFF
Requer que o ciclo de energia entre em vigor.

DISABLED
O hardware/dispositivo está desabilitado.

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

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

Se o dispositivo usar o DMA master barramento, você deverá usar M com uma das seguintes letras (mutuamente exclusivas) que indica o tipo de canal DMA usado: A, B ou F. Se nem A, B ou F forem especificados, um canal DMA padrão será assumido.

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

IOConfig=io-range[,io-range]...
Especifica um ou mais intervalos de portas de E/S para o dispositivo, em qualquer um dos seguintes formulários:

start-end[([decode-mask][:alias-offset][:attr])] (Tipo 1 intervalo de E/S)

start
Especifica o endereço inicial do intervalo de portas de E/S como um endereço hexadecimal de 64 bits.

end
Especifica o endereço final do intervalo de portas de E/S, também como um endereço hexadecimal de 64 bits.

decode-mask
Define o tipo de alias e pode ser qualquer um dos seguintes:

Valor de máscara Significado 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 usado.

attr
Especifica a letra M se o intervalo fornecido estiver na memória do sistema. Se omitido, o intervalo determinado estará no espaço da porta de E/S.

Tamanho@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (Intervalo de E/S tipo 2)

size
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 do intervalo de portas de E/S como um endereço hexadecimal de 64 bits.

align-mask
Opcionalmente, especifica uma máscara de 64 bits usada em uma operação AND bit a bit para alinhar o início do intervalo de portas de E/S em um limite de endereço integral (geralmente de 32 bits ou 64 bits).

decode-mask
Define o tipo de alias e pode ser qualquer um dos seguintes:

Valor de máscara Significado 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 usado.

attr
Especifica a letra M se o intervalo fornecido estiver na memória do sistema. Se omitido, o intervalo determinado estará no espaço da porta de E/S.

MemConfig=mem-range[,mem-range]...
Especifica um ou mais intervalos de memória para o dispositivo em uma das seguintes formas:

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

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

end
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 Significado
R Somente leitura
W Somente gravação
RW Leitura/gravação
C Gravação combinada permitida
H Cacheable
F Pré-busca
D O endereçamento de decodificação de cartão é de 32 bits, em vez de 24 bits

Se R e W forem especificados ou se nenhum for especificado, a leitura/gravação será assumida.

size
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.

align-mask
Opcionalmente, especifica uma máscara de 64 bits usada em uma operação AND bit a bit para alinhar o início do intervalo de memória do dispositivo em um limite de endereço integral (geralmente de 64 bits).

Se align-mask for omitido, o alinhamento de memória padrão estará em um limite de 4K (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs será omitido se o dispositivo usar um IRQ relativo ao barramento e disparado por borda. Caso contrário, especifique L para indicar um IRQ e LS disparados por nível se o dispositivo puder compartilhar as linhas IRQ listadas nessa entrada.

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

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Configura os registros do CardBus e/ou cria até duas janelas de memória permanentes que são mapeadas para o espaço de atributo do dispositivo. Um driver pode usar as janelas de memória para acessar o espaço de atributo de um ISR. Especifique todos os valores numéricos no 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 em um 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.

attrs
Opcionalmente, especifica um ou mais atributos para o dispositivo, separados por espaços. Um especificador de atributo inválido invalida toda a entrada PcCardConfig . Se mais de um especificador para um atributo específico for fornecido, os atributos serão aplicados a janelas de E/S individuais ou de memória para o dispositivo. Se apenas um especificador for fornecido, esse atributo será aplicado a todas as janelas (consulte o exemplo a seguir).

Especificamente, se vários especificadores forem fornecidos, o primeiro especificador encontrado lendo da esquerda para a direita será aplicado à primeira janela e o próximo especificador aplicado à segunda janela. No máximo duas janelas de E/S 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, uma segunda entrada PcCardConfig deverá ser incluída.

Os atributos incluem:

Atributo Descrição
W Caminho de dados de E/S de 16 bits.

O padrão será de 8 bits se o INF especificar uma diretiva LogConfig . Se nenhuma diretiva LogConfig for especificada, o driver usará E/S de 16 bits.
Sn ~IOCS16 fonte.

Se n for 0, ~IOCS16 será baseado no valor do bit de tamanho de dados. Se n for 1, ~IOCS16 será baseado no sinal ~IOIS16 do dispositivo. O padrão é S1.
Zn E/S de 8 bits, estado de espera zero.

Se n for 1, os acessos de E/S de 8 bits ocorrerão sem nenhum estado de espera adicional. Se n for 0, o acesso ocorrerá com estados de espera adicionais. Esse sinalizador não tem significado para E/S de 16 bits. O padrão é Z0.
Xln Estados de espera de E/S.

Se n for 1, os acessos ao sistema de 16 bits ocorrerão 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 de memória, em que n pode ser 0, 1, 2 ou 3.

Esse valor determina o número de estados de espera adicionais para acessos de 16 bits a uma janela de memória. O padrão é XM3.
A Intervalo de memória a ser mapeado como Memória de atributo.
C Intervalo de memória a ser mapeado como Memória Comum (padrão).

Por exemplo, um valor attrs de (WB CA M XM1 XI0) é convertido 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 o local attribute-memory do conjunto de registros de configuração para uma função de um dispositivo multifuncional, da seguinte maneira:

ConfigRegBase
Especifica o deslocamento de atributo dos registros de configuração para essa função do dispositivo multifuncional.

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

IoResourceIndex
Especifica o índice para a entrada IOConfig para o driver de barramento usar na programação da base de E/S de configuração e dos registros de limite. Esse índice é baseado em zero, ou seja, zero designa a entrada IOConfig inicial nesta seção log-config.

attrs
Se definido como a letra A, direciona o driver de barramento PCMCIA para ativar a habilitação de áudio na configuração e status registros.

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

Comentários

Uma diretiva LogConfig pode ser especificada em qualquer seção INF DDInstall por fabricante por modelo ou INF DDInstall. Seção LogConfigOverride.

Um INF para um dispositivo não PnP que dá suporte a várias configurações lógicas alternativas normalmente define um conjunto de seções de log-config em uma seção DDInstall . Cada log-config-section especifica um conjunto discreto de recursos de configuração lógica. Ele também inclui uma entrada ConfigPriority , que classifica cada configuração lógica de acordo com seus efeitos no desempenho do dispositivo e do driver, facilidade de inicialização e assim por diante.

Para dispositivos PnP, o gerenciador PnP atribui um conjunto de recursos de hardware lógicos a cada dispositivo PnP. Ou seja, o gerenciador de PnP consulta os drivers de barramento do sistema, recebe seus relatórios de recursos de configuração de barramento de E/S por dispositivo em uso e atribui conjuntos por dispositivo de recursos lógicos de hardware para obter o melhor equilíbrio em todo o sistema no uso de todos esses recursos.

Como resultado, a diretiva LogConfig em uma seção DDInstall é ignorada para dispositivos PnP. Para substituir os recursos relatados pelo barramento para um dispositivo PnP, inclua a diretiva LogConfig em uma DDInstall. Seção LogConfigOverride . Nesse caso, os recursos especificados na seção log-config são usados em vez daqueles relatados pelo barramento.

As extensões de plataforma podem ser adicionadas a uma seção DDInstall que contém uma diretiva LogConfig ou a uma DDInstall. Seção LogConfigOverride para especificar configurações lógicas específicas da plataforma ou específicas do sistema operacional. Para obter mais informações, consulte Criando um arquivo INF.

Um determinado nome de seção de log-config deve ser exclusivo para o arquivo INF, mas pode ser referenciado por diretivas LogConfig em outras seções inf DDInstall para os mesmos dispositivos. Cada nome de seção criado pelo GRAVADOR INF deve ser exclusivo no arquivo INF e deve seguir as regras gerais para definir nomes de seção. Para obter mais informações sobre essas regras, consulte Regras gerais de sintaxe para arquivos INF.

Somente uma entrada ConfigPriority pode ser usada em cada log-config-section. Pode haver mais de uma de cada uma das outras entradas, dependendo dos requisitos de recursos de hardware do dispositivo.

Uma ou mais entradas MfCardConfig= só podem aparecer em uma seção log-config que é referenciada por uma diretiva LogConfig na DDInstall. Seção LogConfigOverride de um INF para um dispositivo multifuncional. Para obter mais informações sobre arquivos INF para dispositivos multifuncionais, consulte Suporte a dispositivos multifuncionais.

LogConfig-Referenced entradas e valores de seção

Em uma seção log-config, o instalador do sistema cria registros de configuração lógica binária e os armazena no registro.

Um arquivo INF pode conter qualquer número de seções de log-config por dispositivo. No entanto, cada seção deve conter informações completas para instalar um dispositivo. Em geral, o INF deve especificar as entradas em cada uma de suas seções de log-config na mesma ordem. O INF deve especificar cada conjunto de entradas na ordem mais adequada para como o driver inicializa seu dispositivo.

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

Durante a instalação, um e apenas um recurso de cada entrada em uma determinada seção log-config são selecionados e atribuídos a um dispositivo específico. Se um dispositivo específico precisar de mais de um recurso do mesmo tipo, um conjunto de entradas desse tipo deverá ser usado em suas seções de log-config.

Por exemplo, para garantir dois intervalos de portas de E/S para um dispositivo específico, duas entradas IOConfig= devem ser especificadas na seção log-config para esse dispositivo. Por outro lado, se um dispositivo não exigir IRQ, seu INF poderá omitir a entrada IRQConfig das seções log-config.

Exemplos

Este exemplo mostra algumas entradas PcCardConfig válidas 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 do Tipo 1 em uma entrada IOConfig . Ele especifica uma região de porta de E/S, oito bytes de tamanho, que pode começar em 1F8, 2F8 ou 3F8.

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

Por outro lado, este exemplo mostra uma especificação de intervalo de E/S tipo 2 em uma entrada IOConfig . Ele especifica uma região de porta de E/S, 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 por 0x400 bytes do próximo.

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

Os dois exemplos a seguir mostram entradas memConfig típicas.

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 começando em limites de 64K.

MemConfig=8000@C0000-D7FFF%F0000

Este exemplo mostra como o arquivo INF da classe HDC do sistema configura várias seções de configuração de log para controladores de disco rígido ESDI genéricos e usa uma DDInstall. Seção LogConfigOverride para um controlador IDE específico.

[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 obter alguns exemplos de como as entradas MfCardConfig são usadas, consulte Suporte a cartões de computador que têm endereços de registro de configuração incompletos.

Confira também

DDInstall

DDInstall. FactDef