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 definidas por el escritor INF, 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 sección 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)]...]
...

Entradas

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

DESEADO
Configurado suavemente, lo más óptimo.

NORMAL
Configurado suavemente, menos óptimo que DESIRED. Esta es la configuración típica.

NORMAL debe especificarse si la sección log-config-section se definió en un DDInstall. Sección LogConfigOverride y no se puede especificar ningún valor de tipo de configuración .

SUBÓPTIMA
Configurado suavemente, menos óptimo que NORMAL.

HARDRECONFIG
Requiere un cambio de jumper para volver a configurar.

CABLEADO
No se puede cambiar.

RESTART
Requiere que el reinicio surta efecto.

REBOOT
Esto es lo mismo que RESTART.

POWEROFF
Requiere que el ciclo de energía surta 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 solo tiene canales DMA de 8 bits y el dispositivo usa DMA del sistema estándar. De lo contrario, puede ser una de las siguientes letras:

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

Si el dispositivo usa DMA de bus-master, debe usar M con una de las siguientes letras (mutuamente excluyentes) que indique el tipo de canal DMA usado: A, B o F. Si no se especifican A, B o 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.

descodificar máscara
Define el tipo de alias y puede ser cualquiera de los siguientes:

Valor de máscara Significado IOR_Alias valor
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 se usa.

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

Tamaño@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).

descodificar máscara
Define el tipo de alias y puede ser cualquiera de los siguientes:

Valor de máscara Significado IOR_Alias valor
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

desplazamiento de alias
No se usa.

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 en uno de los siguientes formularios:

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:

Carta Significado
R Solo lectura
W Solo escritura
RW Lectura/escritura
C Escritura combinada permitida
H Almacenable en caché
F Captura previa
D La 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 desencadenado por el nivel y LS 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 de la siguiente por una coma (,).

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Configura los registros 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 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 aplicado a la segunda ventana. Un máximo de dos ventanas de E/S y dos ventanas de memoria se pueden controlar mediante 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 de E/S de 8 bits y cero.

Si n es de 1, se producen accesos de E/S de 8 bits 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 de 1, se producen accesos del sistema de 16 bits 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 de 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 a 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 que el controlador de bus usará para programar la base de E/S de configuración y limitar los registros. Este índice se basa en cero, es decir, cero designa la entrada ioConfig inicial en esta sección log-config-section.

attrs
Si se establece en la letra A, dirige al controlador del bus PCMCIA para activar 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 sección discreta log-config-section en el DDInstall de INF. Sección LogConfigOverride , cada sección 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 por fabricante o INF DDInstall por fabricante. Sección LogConfigOverride.

Un INF para un dispositivo que no es PnP que admite varias configuraciones lógicas alternativas normalmente define un conjunto de secciones log-config en una sección DDInstall . Cada sección 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 bus de E/S por dispositivo en uso y asigna conjuntos por dispositivo de recursos de hardware lógico para lograr el mejor equilibrio de todo el sistema en el uso de todos estos recursos.

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

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

Un nombre de sección log-config-section determinado debe ser único para el archivo INF, pero las directivas LogConfig pueden hacer referencia a ella en otras secciones de INF DDInstall para los mismos dispositivos. Cada nombre de sección creado por INF-writer 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, vea Reglas de sintaxis general para archivos INF.

Solo se puede usar una entrada ConfigPriority en cada sección log-config-. 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 sección log-config-a la que hace referencia una directiva LogConfig en DDInstall. Sección LogConfigOverride de un INF para un dispositivo multifunción. Para obtener más información sobre los archivos INF para dispositivos multifunción, vea Compatibilidad con dispositivos multifunción.

LogConfig-Referenced entradas y valores de sección

Desde una sección log-config-, 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 secciones log-config-per-device. 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 secciones log-config-en el mismo orden. 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 sección log-config-section para un dispositivo determinado, solo se usa una de estas secciones INF durante la instalación. Este tipo de archivo INF controla parcialmente qué sección se usa con el valor ConfigPriority que proporciona en cada una de estas secciones 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 más baja si se encuentra un conflicto con un dispositivo ya instalado.

Durante la instalación, se selecciona uno y solo un recurso de cada entrada de una sección de configuración de registro determinada 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 secciones log-config-.

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

Ejemplos

En este ejemplo se muestran algunas entradas 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, de ocho bytes de tamaño, que puede 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, de ocho bytes de tamaño, que puede 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 especificando un intervalo de puertos de E/S que se desplaza por 0x400 bytes de la 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 32K bytes que puede comenzar en C00000 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 secciones de configuración de registro para controladores de disco duro ESDI genéricos y usa un DDInstall. Sección 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 , consulta Compatibilidad con tarjetas pc que tienen direcciones de registro de configuración incompletas.

Consulte también

DDInstall

DDInstall. FactDef