Compartir a través de


Reglas de sintaxis generales para archivos INF

Un archivo INF es un archivo de texto organizado en secciones con nombre. Algunas secciones tienen nombres definidos por el sistema y algunas secciones tienen nombres determinados por el escritor del archivo INF.

Cada sección contiene entradas específicas de sección que interpretan los componentes de instalación del dispositivo. Algunas entradas comienzan con una palabra clave predefinida. Estas entradas se denominan directivas.

Algunas entradas de archivo INF son básicamente punteros de una sección a otra, para un propósito específico. Por ejemplo, una directiva AddReg inf identifica una sección que contiene entradas que indican a Windows que modifique el registro. Estas entradas a veces incluyen argumentos adicionales (obligatorios o opcionales) para que Windows interprete durante la instalación.

Otras entradas de archivo INF no apuntan a otras secciones, sino que proporcionan información que Windows usa durante la instalación, como nombres de archivo, valores del Registro, información de configuración de hardware, marcas, etc. Por ejemplo, una directiva INF DriverVer proporciona información de versión del controlador.

Cuando Windows inicia una instalación, primero busca una sección versión inf para comprobar la validez del archivo INF. A continuación, inicia la instalación mediante la búsqueda de una sección fabricante inf. Esta sección contiene directivas para las secciones Modelos INF, que a su vez proporcionan directivas que conducen a varias secciones inf DDInstall, en función del identificador de hardware del dispositivo que se está instalando.

Las siguientes reglas de sintaxis rigen el contenido obligatorio y opcional de los archivos INF, el formato de los nombres de sección mediante tokens de cadena y formato de línea, continuación y comentarios.

Distinción entre mayúsculas y minúsculas

  • Los nombres de sección, las entradas y las directivas no distinguen mayúsculas de minúsculas. Por ejemplo, las especificaciones de nombre de sección, VERSION y Version son igualmente válidas dentro de un archivo INF.

Contenido obligatorio y opcional

  • El conjunto de secciones, entradas y directivas obligatorias y opcionales de cualquier archivo INF determinado depende del tipo de dispositivo o controlador o componente que se va a instalar.

  • El conjunto de secciones, entradas específicas de sección y directivas necesarias para instalar cualquier dispositivo determinado y sus controladores también depende algo del instalador de clase correspondiente, si existe uno. Para obtener más información sobre cómo los instaladores de clase proporcionados por el sistema controlan los archivos INF específicos del tipo de dispositivo, consulte la documentación específica del tipo de dispositivo en WDK.

  • Dentro de las definiciones de sintaxis, las entradas opcionales se delimitan por corchetes sinboldar ([,]). Por otro lado, los corchetes de negrita ([, ]) son elementos necesarios de la entrada en la que se encuentran. En el ejemplo siguiente, se requieren corchetes alrededor de la versión , mientras que los corchetes alrededor de Class=class-name indican que esta entrada es opcional.

    [Version]
    
    Signature="signature-name"
    [Class=class-name]
    ...
    

Nombres de sección

  • Las secciones se pueden especificar en cualquier orden. La mayoría de los archivos INF enumeran secciones en un orden determinado, por convención, pero Windows busca secciones por nombre, no por ubicación dentro del archivo INF.

  • Cada sección de un archivo INF comienza con el nombre de sección entre corchetes ([ ]). El nombre de sección puede definirse por el sistema o inf-writer.

    Por ejemplo, [Manufacturer] especifica el inicio de la sección Fabricante con nombre del sistema, mientras que [Std.Mfg] representa un nombre de sección de modelos definido por INF-writer determinado.

    Un nombre de sección tiene una longitud máxima de 255 caracteres en Windows 2000 y versiones posteriores de Windows.

    Cada sección termina al principio de un nuevo [nombre de sección] o al final de la marca de archivo.

  • Si más de una sección de un archivo INF tiene el mismo nombre, el sistema combina sus entradas y directivas en una sola sección.

  • A menos que se incluya entre comillas dobles ("), un nombre de sección definido por INF-writer debe ser una cadena sin comillas única a la inf sin comillas de caracteres visibles explícitamente, excepto determinados caracteres con significados específicos de INF. En concreto, un nombre de sección sin comillas al que hace referencia una entrada o directiva de sección no puede tener espacios iniciales o finales, un carácter de salto de línea, un carácter de retorno o cualquier carácter de control invisible y no debe contener tabulaciones. Además, no puede contener ninguno de los caracteres de corchete ([ ]), un carácter de un solo porcentaje (%), un punto y coma (;), o cualquier carácter interno de comillas dobles (") y no puede tener una barra diagonal inversa (\) como último carácter.

    Por ejemplo, Std.Mfg y Std_Mfg son nombres de sección únicos y válidos cuando hace referencia a una entrada o directiva de archivo INF, pero Std; Mfg (con su punto y coma interno) no es válido a menos que esté entre comillas dobles (").

    Al especificar un nombre de sección definido por INF-writer como una "cadena entre comillas" se invalida la mayoría de las restricciones descritas anteriormente en caracteres en los nombres de sección a los que se hace referencia. Este nombre de sección delimitado puede contener casi cualquier carácter visible explícita o implícitamente excepto el corchete de cierre (]) siempre que la sección correspondiente del archivo INF coincida exactamente con esta "cadena entre comillas".

    Por ejemplo, ";; Std Mfg " es una referencia válida de nombre de sección si la declaración de sección correspondiente en el archivo INF coincide exactamente con el nombre dentro de las comillas dobles con respecto a sus caracteres de espacio y punto y coma como [;; Std Mfg ].

Uso de tokens de cadena

  • Muchos valores de un archivo INF, incluidos los nombres de sección definidos por INF-writer, se pueden expresar como tokens de clave de cadena del formulario %strkey%. En la sección Cadenas INF del archivo INF, cada clave de cadena debe estar asociada a un valor de cadena que consta de una secuencia de caracteres visibles explícitamente. Si es necesario, el código de instalación convierte el valor de cadena en Unicode.

    Para obtener más información sobre cómo definir % tokens de strkey% y sus respectivos valores, consulte la descripción de la sección Cadenas INF.

Formato de línea, continuación y comentarios

  • Cada entrada y directiva de una sección termina con un carácter de retorno o avance de línea. Por lo tanto, el editor de texto usado para crear un archivo INF no debe insertar caracteres de retorno o avance de línea después de un número arbitrario determinado por el editor de caracteres.

  • El carácter de barra diagonal inversa (\) se puede usar como un continuor de línea explícito en una entrada o directiva. Sin embargo, los caracteres de barra diagonal inversa también se usan en las especificaciones de ruta de acceso. Para asegurarse de que un carácter de barra diagonal inversa que aparece en una especificación de ruta de acceso no está malinterpretado como un continuor de línea, use la siguiente estrategia:

    • Para una directiva que abarca dos líneas, una de las cuales es una entrada que contiene una barra diagonal inversa, use comillas para delimitar la entrada que contiene la barra diagonal inversa.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • Evite usar el carácter de barra diagonal inversa de la manera que se muestra en el ejemplo siguiente. Windows omite la primera barra diagonal inversa e interpreta la segunda barra diagonal inversa como un continuor de línea.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • La sintaxis siguiente es válida y es equivalente a CopyFiles = "SomeDirectory\",SomeFile ; comment.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      Dado que el texto después de un punto y coma se omite, CopyFiles = "SomeDirectory\" ; comment ,SomeFile no funciona.

  • Los comentarios comienzan con un carácter de punto y coma (;). Al analizar e interpretar un archivo INF, el sistema asume que lo siguiente no tiene relevancia para el proceso de instalación:

    • Cualquier carácter que siga un punto y coma en la misma línea, a menos que el punto y coma aparezca dentro de una "cadena entrecomillada" o % un token de strkey%
    • Cualquier línea vacía que no contenga nada excepto un carácter de salto de línea o de retorno
  • Las comas separan los valores proporcionados en las directivas y entradas de sección.

    Una entrada o directiva de archivo INF puede omitir un valor opcional en medio de una lista de valores, pero las comas deben permanecer. Los archivos INF pueden omitir comas finales.

    Por ejemplo, considere la sintaxis de una entrada de sección SourceDisksFiles :

    Nombre=diskid[,[subdir][,size]]

    Una entrada que omite el valor de subdir , pero proporciona el valor de tamaño debe especificar los delimitadores de coma para ambos valores, como se muestra en el ejemplo siguiente:

    Nombre=diskid,,size

    Una entrada en un archivo INF que omite los dos valores opcionales puede tener este formato:

    Nombre=diskid

  • Para incluir un carácter de porcentaje (%) en los valores proporcionados en las directivas y entradas de sección, escape el carácter de porcentaje con otro carácter de porcentaje.

    Por ejemplo, considere esta instrucción en una sección [add-registry-section]:

    HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll"

    El valor del Registro se establecerá con el siguiente valor:

    %SystemRoot%\System32\IoLogMsg.dll

  • Para incluir un carácter de comilla doble (") en los valores proporcionados en las directivas y entradas de sección, escape el carácter de comilla doble con otro carácter de comilla doble. Tenga en cuenta que la cadena debe estar dentro de una "cadena entre comillas".

    Por ejemplo, considere esta instrucción en una sección [add-registry-section]:

    HKR,,Example,"Display an ""example"" string"

    El valor del Registro se establecerá con el siguiente valor:

    Mostrar una cadena "example"

Límites de tamaño de INF

  • La longitud máxima, en caracteres, de un campo de archivo INF, antes de la sustitución de cadenas y la inclusión de un carácter NULL de terminación, es 4096.

  • Después de la sustitución de cadenas, la longitud máxima, en caracteres, de una cadena de archivo INF es 4096, que incluye un carácter NULL de terminación.

  • Sin embargo, tenga en cuenta que Plug and Play (PnP) puede imponer un límite más restrictivo para determinados campos de archivo INF que reconoce o usa, como la descripción del dispositivo, el proveedor de controladores y el fabricante del dispositivo.