Compartir a través de


Directiva LogConfig de INF

Precaución

A partir de Windows 11 versión 22H2, un paquete de controladores que usa esta directiva ya no es apto para una firma del Centro para desarrolladores de hardware.

Los paquetes de controladores universales y los controladores de Windows no pueden usar esta directiva.

Una directiva LogConfig hace referencia a una o varias secciones INF-writer-defined, cada una de las cuales especifica una configuración lógica de recursos de hardware , las líneas de solicitud de interrupción, los intervalos de memoria, los puertos de E/S y los canales DMA que el dispositivo puede usar. Cada log-config-section especifica un conjunto alternativo de recursos de hardware relativos al bus que el dispositivo puede usar.

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

Los archivos INF para dispositivos que no son PnP usan esta directiva para crear configuraciones básicas.

Los archivos INF para dispositivos PnP usan esta directiva solo para crear configuraciones de invalidación.

Cada sección con nombre a la que hace referencia una directiva LogConfig tiene el siguiente 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)]...]
...

Entries

ConfigPriority=priority-value
Especifica el valor de prioridad para esta configuración lógica, como uno de los siguientes:

DESIRED
Configuración flexible, más óptimo.

NORMAL
Configuración flexible, menos óptimo que DESIRED. Es la configuración habitual.

NORMAL debe especificarse si log-config-section se definió en una sección DDInstall.LogConfigOverride y no se puede especificar ningún valor config-type.

SUBOPTIMAL
Configuración flexible, menos óptimo que NORMAL.

HARDRECONFIG
Requiere un cambio de jumper para volver a configurar.

HARDWIRED
No se puede cambiar.

RESTART
Requiere un reinicio para que surta efecto.

REBOOT
Es lo mismo que RESTART.

POWEROFF
Requiere un ciclo de encendido para surtir efecto.

DISABLED
El hardware o el dispositivo están deshabilitados.

DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs es opcional si el dispositivo está conectado en un bus que tiene solo canales DMA de 8 bits y el dispositivo usa DMA del sistema estándar. De lo contrario, puede ser una de las siguientes letras:

Letra Significado
D DMA de 32 bits
W DMA de 16 bits
N. DMA de 8 bits

Si el dispositivo usa DMA maestro de bus, debe usar M con una de las siguientes letras (mutuamente excluyentes) que indiquen el tipo de canal DMA usado: A, B o F. Si no se especifican A, B ni F, se supone un canal DMA estándar.

DMANum especifica uno o varios canales DMA relativos al bus como números decimales, cada uno separado del siguiente por una coma (,).

IOConfig=io-range[,io-range]...
Especifica uno o varios intervalos de puertos de E/S para el dispositivo, en cualquiera de las formas siguientes:

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

start
Especifica la dirección inicial del intervalo de puertos de E/S como una dirección hexadecimal de 64 bits.

end
Especifica la dirección final del intervalo de puertos de E/S, también como una dirección hexadecimal de 64 bits.

decode-mask
Define el tipo de alias y puede ser cualquiera de los siguientes:

Valor de máscara Significado Valor de IOR_Alias
3ff Descodificación de 10 bits 0x04
fff Descodificación de 12 bits 0x10
ffff Descodificación de 16 bits 0x00
0 Descodificación positiva 0xFF

alias-offset
No utilizado.

attr
Especifica la letra M si el intervalo especificado está en la memoria del sistema. Si se omite, el intervalo especificado está en el espacio de puertos de E/S.

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

size
Especifica el número de bytes necesarios para el intervalo de puertos de E/S como un valor hexadecimal de 32 bits.

min
Especifica la dirección inicial más baja posible del intervalo de puertos de E/S como una dirección hexadecimal de 64 bits.

max
Especifica la dirección final más alta posible del intervalo de puertos de E/S como una dirección hexadecimal de 64 bits.

align-mask
Opcionalmente, especifica una máscara de 64 bits que se usa en una operación AND bit a bit para alinear el inicio del intervalo de puertos de E/S en un límite de dirección entero (normalmente de 32 o 64 bits).

decode-mask
Define el tipo de alias y puede ser cualquiera de los siguientes:

Valor de máscara Significado Valor de IOR_Alias
3ff Descodificación de 10 bits 0x04
fff Descodificación de 12 bits 0x10
ffff Descodificación de 16 bits 0x00
0 Descodificación positiva 0xFF

alias-offset
No utilizado.

attr
Especifica la letra M si el intervalo especificado está en la memoria del sistema. Si se omite, el intervalo especificado está en el espacio de puertos de E/S.

MemConfig=mem-range[,mem-range]...
Especifica uno o varios intervalos de memoria para el dispositivo con uno de los siguientes formatos:

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

start
Especifica la dirección física inicial (relativa al bus) del intervalo de memoria del dispositivo como un valor hexadecimal de 64 bits.

end
Especifica la dirección física final del intervalo de memoria, también como un valor hexadecimal de 64 bits.

attr
Especifica los atributos del intervalo de memoria como una o varias de las letras siguientes:

Letra Significado
R Solo lectura
W Solo escritura
RW Lectura/escritura
C Escritura combinada permitida
H Almacenable en caché
F Precapturable
D El direccionamiento de descodificación de tarjetas es de 32 bits, en lugar de 24 bits

Si se especifican R y W o si no se especifica ninguno, se supone que es de lectura y escritura.

size
Especifica el número de bytes necesarios en el intervalo de memoria como un valor hexadecimal de 32 bits.

min
Especifica la dirección inicial más baja posible del intervalo de memoria del dispositivo como un valor hexadecimal de 64 bits.

max
Especifica la dirección final más alta posible del intervalo de memoria como un valor hexadecimal de 64 bits.

align-mask
Opcionalmente, especifica una máscara de 64 bits que se usa en una operación AND bit a bit para alinear el inicio del intervalo de memoria del dispositivo en un límite de dirección entero (normalmente de 64 bits).

Si se omite align-mask, la alineación de memoria predeterminada está en un límite de 4K (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs se omite si el dispositivo usa un IRQ relativo al bus y desencadenado por el perímetro. De lo contrario, especifique L para indicar un IRQ y LS desencadenado por el nivel si el dispositivo puede compartir las líneas IRQ enumeradas en esta entrada.

IRQNum especifica uno o varios IRQ relativos al bus que el dispositivo puede usar como números decimales, cada uno separado del siguiente por una coma (,).

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Configura los registros de CardBus o crea hasta dos ventanas de memoria permanentes que se asignan al espacio de atributos del dispositivo. Un controlador puede usar las ventanas de memoria para acceder al espacio de atributos desde un ISR. Especifique todos los valores numéricos en formato hexadecimal.

Los elementos de una entrada PcCardConfig son los siguientes:

ConfigIndex
Especifica el índice de configuración de PCMCIA de 8 bits para un dispositivo en un bus PCMCIA.

MemoryCardBase1
Opcionalmente, especifica una dirección base de 32 bits para una primera ventana de memoria.

MemoryCardBase2
Opcionalmente, especifica una dirección base de 32 bits para una segunda ventana de memoria.

attrs
Opcionalmente, especifica uno o varios atributos para el dispositivo, separados por espacios. Un especificador de atributo no válido invalida toda la entrada PcCardConfig. Si se proporciona más de un especificador para un atributo determinado, los atributos se aplican a ventanas de memoria o E/S individuales para el dispositivo. Si solo se proporciona un especificador, ese atributo se aplica a todas las ventanas (consulte el ejemplo siguiente).

En concreto, si se proporcionan varios especificadores, el primer especificador encontrado que lee de izquierda a derecha se aplicará a la primera ventana y el especificador siguiente se aplicará a la segunda ventana. Se pueden controlar dos ventanas de E/S y dos ventanas de memoria como máximo con una sola entrada PcCardConfig. Si el dispositivo tiene más de dos ventanas de memoria, se debe incluir una segunda entrada PcCardConfig.

Los atributos incluyen:

Atributo Descripción
W Ruta de acceso de datos de E/S de 16 bits.

El valor predeterminado es de 8 bits si el INF especifica una directiva LogConfig. Si no se especifica ninguna directiva LogConfig, el controlador usa E/S de 16 bits.
Sn Origen de ~IOCS16.

Si n es 0, ~IOCS16 se basa en el valor del bit de tamaño de datos. Si n es 1, ~IOCS16 se basa en la señal ~IOIS16 del dispositivo. El valor predeterminado es S1.
Zn Estado de espera cero de E/S de 8 bits.

Si n es 1, los accesos de E/S de 8 bits se producen con cero estados de espera adicionales. Si n es 0, el acceso se produce con estados de espera adicionales. Esta marca no tiene significado para E/S de 16 bits. El valor predeterminado es Z0.
Xln Estados de espera de E/S.

Si n es 1, los accesos del sistema de 16 bits se producen con un estado de espera adicional. El valor predeterminado es Xl1.
M Ruta de acceso de datos de memoria de 16 bits. El valor predeterminado es 8 bits.
M8 Ruta de acceso de datos de memoria de 8 bits.
XMn Estados de espera de memoria, donde n puede ser 0, 1, 2 o 3.

Este valor determina el número de estados de espera adicionales para el acceso de 16 bits a una ventana de memoria. El valor predeterminado es XM3.
A Intervalo de memoria que se va a asignar como memoria de atributo.
C Intervalo de memoria que se va a asignar como memoria común (valor predeterminado).

Por ejemplo, un valor attrs de (WB CA M XM1 XI0) se traduce en lo siguiente:

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 la ubicación de memoria de atributo del conjunto de registros de configuración para una función de un dispositivo multifunción, como se indica a continuación:

ConfigRegBase
Especifica el desplazamiento de atributo de los registros de configuración para esta función del dispositivo multifunción.

ConfigOptions
Especifica el registro de la opción de configuración PCMCIA de 8 bits.

IoResourceIndex
Especifica el índice de la entrada IOConfig para que el controlador de bus lo use en la programación de la base de E/S de configuración y limite los registros. Este índice se basa en cero, es decir, cero designa la entrada IOConfig inicial en esta log-config-section.

attrs
Si se establece con la letra A, indica al controlador del bus PCMCIA que active la habilitación de audio en los registros de configuración y estado.

Cada entrada MfCardConfig proporciona información sobre una sola función del dispositivo multifunción. Cuando un conjunto de directivas LogConfig hace referencia a una log-config-section discreta en la sección DDInstall.LogConfigOverride del INF, cada log-config-section debe tener sus entradas, incluidas las entradas MfCardConfig, enumeradas en el mismo orden.

Comentarios

Se puede especificar una directiva LogConfig en cualquier sección INF DDInstall section o INF DDInstall.LogConfigOverride section por fabricante o por modelos.

Un INF para un dispositivo que no es de PnP que admita varias configuraciones lógicas alternativas normalmente define un conjunto de log-config-sections en una sección DDInstall. Cada log-config-section especifica un conjunto discreto de recursos de configuración lógica. También incluye una entrada ConfigPriority, que clasifica cada configuración lógica según sus efectos en el rendimiento del dispositivo y del controlador, facilidad de inicialización, etc.

En el caso de los dispositivos PnP, el administrador de PnP asigna un conjunto de recursos de hardware lógicos a cada dispositivo PnP. Es decir, el administrador de PnP consulta los controladores de bus del sistema, recibe sus informes de recursos de configuración de buses de E/S por dispositivo en uso y asigna conjuntos por dispositivo de recursos de hardware lógicos para lograr el mejor equilibrio de todo el sistema en el uso de todos estos recursos.

Como resultado, se omite la directiva LogConfig en una sección DDInstall para dispositivos PnP. Para invalidar los recursos notificados por el bus para un dispositivo PnP, incluya la directiva LogConfig en una sección DDInstall.LogConfigOverride. En este caso, los recursos especificados en log-config-section se usan en lugar de los notificados por el bus.

Las extensiones de plataforma se pueden agregar a una sección DDInstall que contenga una directiva LogConfig o a una sección DDInstall.LogConfigOverride para especificar configuraciones lógicas específicas de la plataforma o del sistema operativo. Para obtener más información, consulte Creación de un archivo INF.

Un nombre de log-config-section determinado debe ser único para el archivo INF, pero se puede hacer referencia a él mediante las directivas LogConfig en otras secciones DDInstall del INF para los mismos dispositivos. Cada nombre de sección INF-writer-created debe ser único dentro del archivo INF y debe seguir las reglas generales para definir nombres de sección. Para obtener más información sobre estas reglas, consulte Reglas generales de sintaxis para archivos INF.

Solo se puede usar una entrada ConfigPriority en cada log-config-section. Puede haber más de una de las otras entradas, en función de los requisitos de recursos de hardware del dispositivo.

Una o varias entradas MfCardConfig= solo pueden aparecer en una log-config-section a a la que hace referencia una directiva LogConfig en la sección DDInstall.LogConfigOverride de un INF para un dispositivo multifunción. Para obtener más información sobre los archivos INF para dispositivos multifunción, consulte Compatibilidad con dispositivos multifunción.

Entradas y valores de sección a los que se hace referencia en LogConfig

En una log-config-section, el instalador del sistema compila registros de configuración lógica binaria y los almacena en el registro.

Un archivo INF puede contener cualquier número de log-config-sections por dispositivo. Sin embargo, cada sección de este tipo debe contener información completa para instalar un dispositivo. En general, el INF debe especificar las entradas de cada una de sus log-config-sections en el mismo orden. El INF debe especificar cada conjunto de entradas en el orden más adecuado para la forma en que el controlador inicializa su dispositivo.

Si hay más de una log-config-section para un dispositivo determinado, solo se usa una de estas secciones INF durante la instalación. Este archivo INF controla parcialmente qué sección se usa con el valor ConfigPriority que proporciona en cada una de estas log-config-section. Es decir, los instaladores del sistema intentan respetar las prioridades de configuración de un archivo INF, pero pueden seleccionar una configuración lógica clasificada inferior si se encuentra un conflicto con un dispositivo ya instalado.

Durante la instalación, se selecciona un solo un recurso de cada entrada de una determinada log-config-section y se asigna a un dispositivo determinado. Si un dispositivo determinado necesita más de un recurso del mismo tipo, se debe usar un conjunto de entradas de ese tipo en sus log-config-sections.

Por ejemplo, para garantizar dos intervalos de puertos de E/S para un dispositivo determinado, se deben especificar dos entradas IOConfig= en log-config-section para ese dispositivo. Por otro lado, si un dispositivo no requiere IRQ, su INF puede omitir la entrada IRQConfig de log-config-sections.

Ejemplos

En este ejemplo se muestran algunas entradas de PcCardConfig válidas para un dispositivo PCMCIA.

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

En este ejemplo se muestra una especificación de intervalo de E/S de tipo 1 en una entrada IOConfig. Especifica una región de puerto de E/S, ocho bytes de tamaño, que pueden comenzar en 1F8, 2F8 o 3F8.

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

Por el contrario, en este ejemplo se muestra una especificación de intervalo de E/S de tipo 2 en una entrada IOConfig. Especifica una región de puerto de E/S, ocho bytes de tamaño, que pueden comenzar en 300, 308, 310, 318, 320 o 328.

IOConfig=8@300-32F%FF8

En este ejemplo se muestra un conjunto de entradas IOConfig para un dispositivo de cuatro puertos, cada uno de los cuales especifica un intervalo de puertos de E/S que se desplaza por 0x400 bytes desde el siguiente.

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

En los dos ejemplos siguientes se muestran entradas típicas de MemConfig.

En este ejemplo se especifica una región de memoria de 32 000 bytes que se puede iniciar en C0000 o D0000.

MemConfig=C0000-C7FFF, D0000-D7FFF

En este ejemplo se especifica una región de memoria de 32 000 bytes a partir de límites de 64 000.

MemConfig=8000@C0000-D7FFF%F0000

En este ejemplo se muestra cómo el archivo INF de clase HDC del sistema configura varias log-config-sections para controladores de disco duro ESDI genéricos y usa una sección DDInstall.LogConfigOverride para un controlador IDE determinado.

[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 obtener algunos ejemplos de cómo se usan las entradas MfCardConfig, consulte Compatibilidad con PC Card que tienen direcciones de registro de configuración incompletas.

Consulte también

DDInstall

DDInstall.FactDef