Seção Cadeias de Caracteres INF

Um arquivo INF deve ter pelo menos uma seção Strings para definir cada token %strkey% especificado em outro lugar nesse 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 chave de cadeia de caracteres em um arquivo INF deve especificar um nome exclusivo que consiste em letras, dígitos e/ou outros caracteres explicitamente visíveis. Um % de caractere dentro de um token strkey deve ser expresso como %%.

alguma cadeia de caracteres | "alguma cadeia decaracteres"
Especifica uma cadeia de caracteres, opcionalmente delimitada usando caracteres de aspas duplas ("), que contém letras, dígitos, pontuação e, possivelmente, até mesmo determinados caracteres implicitamente visíveis, em particular, espaço interno e/ou caracteres de guia. No entanto, uma cadeia de caracteres não coçada não pode conter aspas duplas internas ("), ponto e vírgula (;), alimentação de linha, retorno ou caracteres de controle invisíveis e não pode ter uma barra invertida () como seu caractere final.

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

"cadeia de caracteres multilinha muito longa" |

"string-with-semicolon" |

"string-ending-in-backslash" |

""double-quoted-string-value""
O valor especificado para um token %strkey% deverá ser colocado entre aspas duplas (") se atender a qualquer um dos seguintes critérios:

  • Se uma cadeia de caracteres especificada tiver espaço em branco à esquerda ou à direita que deve ser retido como parte de seu valor, essa cadeia de caracteres deverá ser colocada entre aspas duplas para impedir que seus espaços em branco à esquerda e/ou à direita sejam descartados pelo analisador INF.

  • Se uma cadeia de caracteres longa puder conter qualquer alimentação de linha interna ou caracteres de retorno devido ao encapsulamento de linha no editor de texto, ela também deverá ser colocada entre aspas duplas para evitar o truncamento da cadeia de caracteres no feed de linha interno inicial ou no caractere de retorno.

  • Se essa cadeia de caracteres contiver um ponto e vírgula, ela deverá ser colocada entre aspas duplas para impedir que a cadeia de caracteres seja truncada no ponto e vírgula. (Como já mencionado em Regras gerais de sintaxe para arquivos INF, o caractere ponto e vírgula começa cada comentário em arquivos INF.)

  • Se essa cadeia de caracteres terminar em uma barra invertida, ela deverá ser colocada entre aspas duplas para impedir que a cadeia de caracteres seja concatenada com a próxima entrada. (Como já mencionado em Regras gerais de sintaxe para arquivos INF, o caractere de barra invertida () é usado como o continuador de linha em arquivos INF.)

  • Como uma especificação de cadeia de caracteres não citada, essa "cadeia de caracteres entre aspas" não pode conter caracteres de aspas duplas internas. No entanto, ele pode ser especificado como um valor de cadeia de caracteres explicitamente entre aspas usando um ou mais pares adicionais de caracteres de aspas duplas (por exemplo, ""alguma cadeia de caracteres").

    O analisador INF não apenas descarta o par mais externo de entrepas duplas entre aspas para qualquer "cadeia de caracteres entre aspas" nesta seção, mas também condensa cada par sequencial subsequente de aspas duplas em um único caractere de aspas duplas.

    Por exemplo, ""alguma cadeia de caracteres""" também se torna "alguma cadeia de caracteres" quando é analisada.

Para resumir, qualquer cadeia de caracteres deverá ser colocada em um par de caracteres de aspas duplas (") se qualquer uma das seguintes opções for verdadeira:

  • A cadeia de caracteres contém espaço em branco à esquerda ou à direita.
  • A cadeia de caracteres é tão longa que a linha é encapsulada.
  • A cadeia de caracteres contém um ponto e vírgula ou um caractere de barra invertida final.
  • A cadeia de caracteres em si é uma cadeia de caracteres entre aspas.

O analisador INF do sistema descarta o par delimitador mais externo de caracteres de aspas duplas delimitando tal cadeia de caracteres, juntamente com qualquer caractere de espaço em branco à esquerda ou à direita fora dos delimitadores de cadeia de caracteres de aspas duplas.

Comentários

Como o analisador INF do sistema remove o par mais externo de entre aspas duplas de qualquer "cadeia de caracteres entre aspas" que define um token %strkey%, muitos dos arquivos INF do sistema definem todos os tokens %strkey% como "cadeia de caracteres entre aspas" para evitar a perda não intencional de espaços em branco à esquerda e à direita durante a análise do INF. O uso de "strings entre aspas" também garante que valores de cadeia de caracteres especialmente longos que encapsulam entre linhas não possam ser truncados e que cadeias de caracteres com barras invertidas finais não possam ser concatenadas à próxima linha no arquivo INF.

Para criar um único arquivo INF internacional, um INF pode ter um conjunto de Cadeias de Caracteres específicas da localidade. Seções LanguageID, conforme mostrado na instrução de sintaxe formal. A extensão LanguageID é um valor hexadecimal de 4 dígitos (sem um "0x" à esquerda) definido da seguinte maneira:

  • Os 10 bits inferiores contêm a ID da linguagem primária e os próximos 6 bits contêm a ID de sublanguagem, conforme especificado pela macro MAKELANGID definida em Winnt.h.
  • As IDs de linguagem e sublanguage devem corresponder aos valores definidos pelo sistema das constantes Win32 LANG_XXX e SUBLANG_XXX definidas em Winnt.h.

Por exemplo, um valor LanguageID de 0407 representa uma ID de idioma principal de LANG_GERMAN (07) com uma ID de sublanguagem de SUBLANG_GERMAN (01), como no exemplo a seguir:

[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"

Um arquivo INF pode conter apenas uma seção Strings, juntamente com uma Strings.Seção LanguageID para cada valor LanguageID.

O Windows seleciona uma única seção Strings usada para traduzir todos os tokens %strkey% para a instalação. Dependendo da localidade atual de um computador específico, o Windows seleciona uma seção Cadeias de Caracteres da seguinte maneira:

  1. O Windows procura pela primeira vez o . Valores languageID no INF que correspondem à localidade atual atribuída ao computador. Se uma correspondência exata for encontrada, o Windows usará strings.Languageid Seção INF para traduzir todos os tokens %strkey% definidos no INF.

    Você precisa duplicar todos os tokens de cadeia de caracteres em todas as Cadeias de Caracteres.* seções, até mesmo constantes numéricas/fixas que não precisam ser localizadas.

  2. Caso contrário, o Windows procura em seguida uma correspondência com o valor LANG_XXX com o valor de SUBLANG_NEUTRAL como o SUBLANG_XXX. Se essa correspondência for encontrada, o Windows usará essa seção INF para traduzir todos os tokens %strkey% definidos dentro do INF.

  3. Caso contrário, o Windows procura em seguida uma correspondência com o valor LANG_XXX e qualquer SUBLANG_XXX válido para a mesma família LANG_XXX . Se essa correspondência parcial for encontrada, use as Cadeias de Caracteres.Languageid Seção INF para traduzir todos os tokens %strkey% definidos no INF.

  4. Caso contrário, o Windows usará a seção Cadeias de Caracteres não definidas para traduzir tokens %strkey% definidos dentro do INF.

Por convenção e por conveniência na criação de um conjunto de arquivos INF para o mercado internacional, as seções Strings são as últimas em todos os arquivos INF do sistema. Usar tokens %strkey% para todos os valores de cadeia de caracteres visíveis do usuário em um INF e colocá-los em seções strings por localidade simplifica a tradução dessas cadeias de caracteres. Para obter mais informações sobre arquivos INF específicos da localidade, consulte Criando arquivos INF internacionais.

Embora as seções Strings sejam as últimas seções em cada arquivo INF, qualquer token %strkey% especificado definido em uma seção Strings pode ser usado repetidamente em outro lugar no INF, em particular, onde quer que o valor traduzido desse token seja necessário. As funções SetupAPI expandem cada token %strkey% para a cadeia de caracteres especificada e, em seguida, usam esse valor expandido para processamento inf adicional.

O uso de %strkey% tokens em arquivos INF não está restrito a valores de cadeia de caracteres visíveis pelo usuário. Esses tokens podem ser usados de qualquer maneira conveniente para o gravador INF, desde que cada token seja definido em uma seção Strings . Por exemplo, quando você escreve um arquivo INF que requer a especificação de vários GUIDs, pode ser conveniente criar um token %strkey% para cada GUID usando um nome significativo como um substituto para cada valor guid.

Especificar um conjunto de % valores strkey% = "{GUID}" na seção Strings do arquivo INF exige que você digite cada valor de GUID explícito apenas uma vez. Isso pode ajudar a fornecer documentação inf interna mais legível do que usando valores guid explícitos em todo o arquivo INF.

Todos os tokens %strkey% devem ser definidos no arquivo INF no qual são referenciados. Portanto, para qualquer arquivo INF que tenha entradas Include e Needs , um INF incluído deve ter sua própria seção Strings para definir todos os tokens %strkey% referenciados nesse INF.

Em uma seção Cadeias de Caracteres INF, o comprimento máximo, em caracteres, de uma cadeia de caracteres de substituição, incluindo um caractere NULL de terminação, é 4096 (Windows Vista e versões posteriores do Windows) e 512 (Windows Server 2003, Windows XP e Windows 2000). Após a substituição de cadeia de caracteres, o comprimento máximo, em caracteres, de uma cadeia de caracteres de arquivo INF é 4096, incluindo um caractere NULL de terminação.

Exemplos

O exemplo a seguir mostra um fragmento de uma seção Strings de um dvd.inf específico à localidade fornecido pelo sistema para instalações em países/regiões de língua inglesa.

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

O exemplo a seguir mostra a concatenação de cadeia de caracteres.

[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."

Confira também

DDInstall

DDInstall. CoInstaladores

DDInstall. HW

DDInstall. Interfaces

DDInstall. Serviços

Fabricante

InterfaceInstall32

Modelos

SourceDisksNames

Versão