Seção INF Strings

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 caractere % dentro de um token strkey deve ser expresso como %%.

alguma cadeia de caracteres | "alguma cadeia de caracteres"
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 associada 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 mantido 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 impedir 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 duplas 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 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 ela é 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 encapsula.
  • 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 de aspas duplas mais externas delimitando tal cadeia de caracteres, juntamente com quaisquer caracteres de espaço em branco à esquerda ou à direita fora das aspas duplas marcam delimitadores de cadeia de caracteres.

Remarks

Como o analisador INF do sistema remove o par mais externo de entrepas duplas de qualquer "cadeia de caracteres entre aspas" que define um token de %strkey%, muitos dos arquivos INF do sistema definem todos os tokens de %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 "cadeia de caracteres 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 extremidades invertidas não possam ser concatenadas para a 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 de 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 da sublanguagem, conforme especificado pela macro MAKELANGID definida em Winnt.h.
  • As IDs de linguagem e sublanguagem 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 primário 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 cadeia de caracteres.Seção LanguageID para cada valor LanguageID .

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

  1. Windows primeiro procura o . Valores LanguageID no INF que correspondem à localidade atual atribuída ao computador. Se uma correspondência exata for encontrada, Windows usará as Cadeias de Caracteres.LanguageID Seção INF para traduzir todos os tokens de% strkey %definidos dentro do INF.

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

  2. Caso contrário, Windows procurará 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, Windows usará essa seção INF para traduzir todos os tokens de% %strkey definidos no INF.

  3. Caso contrário, Windows procurará 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 dentro do INF.

  4. Caso contrário, Windows usa a seção Cadeias de Caracteres não definidas para traduzir %tokens de% 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 de% 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 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 de% strkey para a cadeia de caracteres especificada e, em seguida, usam esse valor expandido para processamento inf adicional.

O uso de tokens de% strkey %em arquivos INF não está restrito a valores de cadeia de caracteres visíveis ao 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 para cada GUID , usando um nome significativo como um substituto para cada valor guid.

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

Todos os tokens %strkey% devem ser definidos dentro do arquivo INF no qual são referenciados. Portanto, para qualquer arquivo INF que tenha entradas Include and 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 de Windows) e 512 (Windows Server 2003, Windows XP e Windows 2000). Após a substituição da 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.

Examples

O exemplo a seguir mostra um fragmento de uma seção Strings de um dvd.inf específico da localidade fornecida 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 da 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."

Consulte também

DDInstall

DDInstall. CoInstaladores

DDInstall. HW

DDInstall. Interfaces

DDInstall. Serviços

Fabricante

InterfaceInstall32

Modelos

SourceDisksNames

Versão