Sección cadenas INF

Un archivo INF debe tener al menos una sección Strings para definir cada token %strkey% especificado en otro lugar de ese INF.

[Strings] | 
[Strings.LanguageID] ...
 
strkey1 = ["]some string["]
strkey2 = "    string-with-leading-or-trailing-whitespace     "  | 
          "very-long-multiline-string" | 
          "string-with-semicolon" | 
          "string-ending-in-backslash" |
          ""double-quoted-string-value""
 ...

Entradas

strkey1, strkey2, ...
Cada clave de cadena de un archivo INF debe especificar un nombre único que consta de letras, dígitos u otros caracteres visibles explícitamente. Un carácter % dentro de un token de strkey debe expresarse como %%.

alguna cadena | "alguna cadena"
Especifica una cadena, opcionalmente delimitada por el uso de caracteres de comillas dobles ("), que contiene letras, dígitos, signos de puntuación y, posiblemente, incluso ciertos caracteres visibles implícitamente, en particular, espacios internos o caracteres de tabulación. Sin embargo, una cadena sin comillas no puede contener comillas dobles internas ("), punto y coma (;), salto de línea, retorno o caracteres de control invisibles, y no puede tener una barra diagonal inversa () como carácter final.

"* string-with-leading-or-trailing-whitespace* " |

"cadena multilínea muy larga" |

"string-with-semicolon" |

"string-ending-in-backslash" |

""double-quoted-string-value""
El valor especificado para un token %strkey% debe incluirse entre comillas dobles (") si cumple cualquiera de los criterios siguientes:

  • Si una cadena especificada tiene espacios en blanco iniciales o finales que se deben conservar como parte de su valor, esa cadena debe incluirse entre comillas dobles para evitar que el analizador INF descarte sus espacios en blanco iniciales o finales.

  • Si una cadena larga puede contener cualquier salto de línea interno o caracteres devueltos debido al ajuste de líneas en el editor de texto, también debe incluirse entre comillas dobles para evitar el truncamiento de la cadena en el carácter de avance de línea interno o devuelto inicial.

  • Si dicha cadena contiene un punto y coma, debe incluirse entre comillas dobles para evitar que la cadena se trunque en el punto y coma. (Como ya se mencionó en Reglas de sintaxis general para archivos INF, el carácter punto y coma comienza cada comentario en los archivos INF).

  • Si dicha cadena termina en una barra diagonal inversa, debe incluirse entre comillas dobles para evitar que la cadena se concatene con la siguiente entrada. (Como ya se mencionó en Reglas de sintaxis general para archivos INF, el carácter de barra diagonal inversa () se usa como continuador de línea en archivos INF).

  • Al igual que una especificación de cadena sin comillas, este tipo de "cadena entrecomillada" no puede contener caracteres de comillas dobles internos. Sin embargo, se puede especificar como un valor de cadena entre comillas dobles explícitamente mediante uno o varios pares adicionales de caracteres de comillas dobles (por ejemplo, ""some string"").

    El analizador INF no solo descarta el par más externo de comillas dobles envolventes para cualquier "cadena entrecomillada" de esta sección, sino que también condensa cada par secuencial subsiguiente de comillas dobles en un carácter de comillas dobles simples.

    Por ejemplo, """some string""" también se convierte en "alguna cadena" cuando se analiza.

Para resumir, cualquier cadena debe incluirse en un par de caracteres de comillas dobles (") si se cumple alguna de las siguientes condiciones:

  • La cadena contiene espacios en blanco iniciales o finales.
  • La cadena es tan larga que se ajusta la línea.
  • La cadena contiene un punto y coma o un carácter de barra diagonal inversa final.
  • La propia cadena es una cadena entre comillas.

El analizador INF del sistema descarta el par envolvente más externo de caracteres de comillas dobles que delimitan dicha cadena, junto con cualquier carácter de espacio en blanco inicial o final fuera de los delimitadores de cadena de comillas dobles.

Observaciones

Dado que el analizador INF del sistema secciona el par más externo de comillas dobles envolventes de cualquier "cadena entrecomillada" que defina un token %strkey%, muchos de los archivos INF del sistema definen todos los tokens %strkey% como "cadena entre comillas" para evitar la pérdida involuntaria de espacios en blanco iniciales y finales durante el análisis inf. El uso de "cadena entre comillas" también garantiza que no se puedan truncar los valores de cadena especialmente largos que encapsulan entre líneas y que las cadenas con barras diagonales inversas finales no se pueden concatenar a la siguiente línea del archivo INF.

Para crear un único archivo INF internacional, un INF puede tener un conjunto de cadenas específicas de la configuración regional.Secciones LanguageID, como se muestra en la instrucción de sintaxis formal. La extensión LanguageID es un valor hexadecimal de 4 dígitos (sin un "0x inicial") que se define de la siguiente manera:

  • Los 10 bits inferiores contienen el identificador de idioma principal y los 6 bits siguientes contienen el identificador de sublanguage, tal como se especifica en la macro MAKELANGID definida en Winnt.h.
  • Los identificadores de idioma y sublanguaje deben coincidir con los valores definidos por el sistema de las constantes Win32 LANG_XXX y SUBLANG_XXX definidas en Winnt.h.

Por ejemplo, un valor languageID de 0407 representa un identificador de idioma principal de LANG_GERMAN (07) con un identificador de sublanguage de SUBLANG_GERMAN (01), como en el ejemplo siguiente:

[Strings]              ; No language ID implies English
DiskName="My Excellent Software"
LocaleSubDir="English"

[Strings.0407]         ; 0407 is the language ID for German
DiskName="Meine ausgezeichnete Software"
LocaleSubDir="German"

Un archivo INF solo puede contener una sección Strings, junto con una cadena.Sección LanguageID para cada valor de LanguageID.

Windows selecciona una sola sección Cadenas que se usa para traducir todos los tokens %strkey% para la instalación. En función de la configuración regional actual de un equipo determinado, Windows selecciona una sección Cadenas de la siguiente manera:

  1. Windows busca primero . Valores languageID del INF que coinciden con la configuración regional actual asignada al equipo. Si se encuentra una coincidencia exacta, Windows usa esa cadena.Languageid Sección INF para traducir todos los tokens %strkey% definidos dentro del INF.

    Debe duplicar todos los tokens de cadena en todas las cadenas.* secciones, incluso constantes numéricas o fijas que no necesitan localizarse.

  2. De lo contrario, Windows busca una coincidencia con el valor LANG_XXX con el valor de SUBLANG_NEUTRAL como SUBLANG_XXX. Si se encuentra dicha coincidencia, Windows usa esa sección INF para traducir todos los tokens %strkey% definidos dentro del INF.

  3. De lo contrario, Windows busca una coincidencia con el valor LANG_XXX y cualquier SUBLANG_XXX válido para la misma familia LANG_XXX . Si se encuentra una coincidencia parcial, use esa cadena.Languageid Sección INF para traducir todos los tokens %strkey% definidos dentro del INF.

  4. De lo contrario, Windows usa la sección Cadenas no codificadas para traducir %strkey% tokens definidos dentro del INF.

Por convención, y para mayor comodidad en la creación de un conjunto de archivos INF para el mercado internacional, las secciones Strings son las últimas dentro de todos los archivos INF del sistema. El uso de tokens %strkey% para todos los valores de cadena visibles para el usuario dentro de un INF y colocarlos en secciones cadenas por configuración regional simplifica la traducción de estas cadenas. Para obtener más información sobre los archivos INF específicos de la configuración regional, vea Creating International INF Files.

Aunque las secciones Strings son las últimas secciones de cada archivo INF, cualquier token %strkey% especificado definido en una sección Strings se puede usar repetidamente en otra parte del INF, en particular, siempre que se requiera el valor traducido de ese token. Las funciones SetupAPI expanden cada token %strkey% a la cadena especificada y, a continuación, usan ese valor expandido para el procesamiento inf adicional.

El uso de tokens %strkey% dentro de los archivos INF no está restringido a los valores de cadena visibles para el usuario. Estos tokens se pueden usar de cualquier manera conveniente para el escritor INF, siempre y cuando cada token se defina dentro de una sección Strings . Por ejemplo, al escribir un archivo INF que requiera la especificación de varios GUID, puede ser conveniente crear un token %strkey% para cada GUID, usando un nombre descriptivo como sustituto de cada valor GUID.

Especificar un conjunto de % valores strkey% = "{GUID}" en la sección Cadenas del archivo INF requiere que escriba cada valor GUID explícito solo una vez. Esto puede ayudar a proporcionar documentación de INF interna más legible que mediante el uso de valores GUID explícitos en todo el archivo INF.

Todos los tokens %strkey% deben definirse dentro del archivo INF en el que se hace referencia a ellos. Por lo tanto, para cualquier archivo INF que tenga entradas Include y Needs , un INF incluido debe tener su propia sección Strings para definir todos los tokens %strkey% a los que se hace referencia en ese INF.

En una sección Cadenas INF, la longitud máxima, en caracteres, de una cadena de sustitución, incluido un carácter NULL de terminación, es 4096 (Windows Vista y versiones posteriores de Windows) y 512 (Windows Server 2003, Windows XP y Windows 2000). Después de la sustitución de cadenas, la longitud máxima, en caracteres, de una cadena de archivo INF es 4096, incluido un carácter NULL de terminación.

Ejemplos

En el ejemplo siguiente se muestra un fragmento de una sección Strings de un dvd.inf específico de la configuración regional proporcionada por el sistema para instalaciones en países o regiones de habla inglesa.

[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ... 

En el ejemplo siguiente se muestra la concatenación de cadenas.

[OEM Windows System Component Verification]
OID = 1.3.6.1.4.1.311.10.3.7    ; WHQL OEM OID 
Notice = "%A% %B% %C% %D% %E%" 
[Strings]
A = "This certificate is used to sign untested drivers that have not passed the Windows Hardware Quality Labs (WHQL) testing process."
B = "This certificate and drivers signed with this certificate are intended for use in test environments only, and are not intended for use in any other context."
C = "Vendors who distribute this certificate or drivers signed with this certificate outside a test environment may be in violation of their driver signing agreement."
D = "Vendors who have their drivers signed with this certificate do so at their own risk." 
E = "In particular, Microsoft assumes no liability for any damages that may result from the distribution of this certificate or drivers signed with this certificate outside the test environment described in a vendor's driver signing agreement."

Consulte también

DDInstall

DDInstall. CoInstallers

DDInstall. HW

DDInstall. Interfaces

DDInstall. Servicios

Fabricante

InterfaceInstall32

Modelos

SourceDisksNames

Versión