Regras gerais de sintaxe para arquivos INF

Um arquivo INF é um arquivo de texto organizado em seções nomeadas. Algumas seções têm nomes definidos pelo sistema e algumas seções têm nomes determinados pelo autor do arquivo INF.

Cada seção contém entradas específicas de seção que são interpretadas por componentes de instalação do dispositivo. Algumas entradas começam com uma palavra-chave predefinida. Essas entradas são chamadas de diretivas.

Algumas entradas de arquivo INF são basicamente ponteiros de uma seção para outra, para uma finalidade específica. Por exemplo, uma diretiva INF AddReg identifica uma seção que contém entradas que instruem o Windows a modificar o registro. Essas entradas às vezes incluem argumentos adicionais (obrigatórios ou opcionais) para Windows interpretar durante a instalação.

Outras entradas de arquivo INF não apontam para outras seções, mas fornecem informações que Windows usa durante a instalação, como nomes de arquivo, valores do Registro, informações de configuração de hardware, sinalizadores e assim por diante. Por exemplo, uma diretiva INF DriverVer fornece informações de versão do driver.

Quando Windows inicia uma instalação, ele primeiro procura uma seção de Versão INF para verificar a validade do arquivo INF. Em seguida, ele inicia a instalação encontrando uma seção INF Manufacturer. Esta seção contém diretivas para seções INF Models, que, por sua vez, fornecem diretivas que levam a várias seções INF DDInstall, com base na ID de hardware do dispositivo que está sendo instalado.

As regras de sintaxe a seguir regem o conteúdo obrigatório e opcional de arquivos INF, o formato de nomes de seção usando tokens de string e formato de linha, continuação e comentários.

Diferenciação de maiúsculas e minúsculas

  • Nomes de seção, entradas e diretivas não diferenciam maiúsculas de minúsculas. Por exemplo, versão, VERSÃO e Versão são especificações de nome de seção igualmente válidas em um arquivo INF.

Conteúdo obrigatório e opcional

  • O conjunto de seções, entradas e diretivas obrigatórios e opcionais em qualquer arquivo INF específico depende do tipo de dispositivo/driver ou componente a ser instalado.

  • O conjunto de seções, entradas específicas de seção e diretivas necessárias para instalar qualquer dispositivo específico e seus drivers também depende um pouco do instalador de classe correspondente, se houver. Para obter mais informações sobre como os instaladores de classe fornecidos pelo sistema lidam com arquivos INF específicos do tipo de dispositivo, consulte a documentação específica do tipo de dispositivo no WDK.

  • Dentro de definições de sintaxe, as entradas opcionais são delimitadas por colchetes sem negrito ([,]). Por outro lado, colchetes destacados em negrito ([, ]) são elementos necessários da entrada na qual estão contidos. No exemplo a seguir, os colchetes ao redor da Versão são necessários, enquanto os colchetes ao redor de Class=class-name indicam que essa entrada é opcional.

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

Nomes de seção

  • As seções podem ser especificadas em qualquer ordem. A maioria dos arquivos INF lista seções em uma determinada ordem, por convenção, mas Windows localiza seções por nome, não por local dentro do arquivo INF.

  • Cada seção em um arquivo INF começa com o nome da seção entre colchetes ([ ]). O nome da seção pode ser definido pelo sistema ou definido pelo editor INF.

    Por exemplo, [Fabricante] especifica o início da seção Fabricante denominada pelo sistema, enquanto [Std.Mfg] representa um nome de seção de Modelos definido pelo autor do INF.

    Um nome de seção tem um comprimento máximo de 255 caracteres em Windows 2000 e versões posteriores de Windows.

    Cada seção termina no início de um novo [nome da seção] ou na marca de fim do arquivo.

  • Se mais de uma seção em um arquivo INF tiver o mesmo nome, o sistema mescla suas entradas e diretivas em uma única seção.

  • A menos que esteja entre caracteres de aspas duplas ("), um nome de seção definido pelo gravador INF deve ser uma cadeia sem aspas exclusiva do INF, composta de caracteres explicitamente visíveis, excluindo determinados caracteres com significados específicos de INF. Em particular, um nome de seção não citado referenciado por uma entrada ou diretiva de seção não pode ter espaços à esquerda ou à direita, um caractere de alimentação de linha, um caractere de retorno ou qualquer caractere de controle invisível, e ele não deve conter caracteres de tabulação. Além disso, ele não pode conter qualquer um dos caracteres de colchete ([ ]), um único caractere de porcentagem (%), um ponto e vírgula (;) ou quaisquer caracteres de aspas duplas internas (") e não pode ter uma barra invertida (\) como seu último caractere.

    Por exemplo, Std.Mfg e Std_Mfg são nomes de seção exclusivos e válidos quando referenciados por uma entrada ou diretiva de arquivo INF, mas Std;Mfg (com seu ponto e vírgula interno) é inválido, a menos que esteja entre aspas duplas (").

    Especificar um nome de seção definido pelo gravador INF como uma "cadeia de caracteres entre aspas" substitui a maioria das restrições descritas anteriormente sobre caracteres em nomes de seção referenciados. Esse nome de seção delimitado pode conter quase todos os caracteres explicitamente ou implicitamente visíveis, exceto o colchete de fechamento (]), desde que a seção correspondente no arquivo INF corresponda exatamente a essa "cadeia de caracteres entre aspas" .

    Por exemplo, ";; Std Mfg " é uma referência válida de nome de seção se a declaração de seção correspondente no arquivo INF corresponder exatamente ao nome dentro das aspas duplas em relação ao seu espaço e caracteres ponto-e-vírgula como [;; Std Mfg ].

Usando tokens de string

  • Muitos valores em um arquivo INF, incluindo nomes de seção definidos pelo gravador INF, podem ser expressos como tokens de chave de cadeia de caracteres na forma %%. Na seção INF Strings do arquivo INF, cada chave de cadeia de caracteres deve ser associada a um valor de cadeia de caracteres que consiste em uma sequência de caracteres explicitamente visíveis. Se necessário, o código de configuração converte o valor da cadeia de caracteres em Unicode.

    Para obter mais informações sobre como definir % tokens strkey% e seus respectivos valores, consulte a descrição da seção Cadeias de Caracteres INF.

Formato de linha, continuação e comentários

  • Cada entrada e diretiva em uma seção termina com um caractere de retorno ou de alimentação de linha. Portanto, o editor de texto usado para criar um arquivo INF não deve inserir caracteres de retorno ou de alimentação de linha após algum número arbitrário de caracteres determinado pelo editor.

  • O caractere de barra invertida (\) pode ser usado como um continuador de linha explícito em uma entrada ou diretiva. No entanto, os caracteres de barra invertida também são usados nas especificações de caminho. Para garantir que um caractere de barra invertida que aparece em uma especificação de caminho não seja interpretado incorretamente como um continuador de linha, use a seguinte estratégia:

    • Para uma diretiva que abrange duas linhas, uma das quais é uma entrada que contém uma barra invertida, use aspas para delimitar a entrada que contém a barra invertida.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • Evite usar o caractere de barra invertida da maneira mostrada no exemplo a seguir. Windows ignora a primeira barra invertida e interpreta a segunda barra invertida como um continuador de linha.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • A sintaxe a seguir é válida e é equivalente a CopyFiles = "SomeDirectory\",SomeFile ; comment.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      Como o texto após um ponto-e-vírgula é ignorado, CopyFiles = "SomeDirectory\" ; comment ,SomeFile não funciona.

  • Os comentários começam com um caractere ponto-e-vírgula (;). Ao analisar e interpretar um arquivo INF, o sistema pressupõe que o seguinte não tenha relevância para o processo de instalação:

    • Todos os caracteres que seguem um ponto-e-vírgula na mesma linha, a menos que o ponto-e-vírgula apareça dentro de uma "cadeia de caracteres entre aspas" ou % um token strkey%
    • Qualquer linha vazia que não contenha nada, exceto um caractere de retorno ou de alimentação de linha
  • Vírgulas separam os valores fornecidos em entradas e diretivas de seção.

    Uma entrada ou diretiva de arquivo INF pode omitir um valor opcional no meio de uma lista de valores, mas as vírgulas devem permanecer. Os arquivos INF podem omitir vírgulas finais.

    Por exemplo, considere a sintaxe de uma entrada de seção SourceDisksFiles :

    nome do arquivo=diskid[,[subdiretório][,tamanho]]

    Uma entrada que omite o valor de subdir, mas fornece o valor de size, deve especificar os delimitadores de vírgula para ambos os valores, conforme mostrado no exemplo a seguir:

    nome do arquivo=diskid,,tamanho

    Uma entrada em um arquivo INF que omite os dois valores opcionais pode ter esse formato:

    nome do arquivo=diskid

  • Para incluir um caractere percentual (%) em valores fornecidos em entradas e diretivas de seção, escape o caractere percentual com outro caractere percentual.

    Por exemplo, considere essa instrução em uma seção [add-registry-section] :

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

    O valor do Registro será definido com o seguinte valor:

    %SystemRoot%\System32\IoLogMsg.dll

  • Para incluir um caractere de aspas duplas (") em valores fornecidos em entradas e diretivas de seção, escape o caractere de aspas duplas com outro caractere de aspas duplas. Observe que a cadeia de caracteres deve estar dentro de uma "string entre aspas".

    Por exemplo, considere esta declaração em uma seção [add-registry-section]:

    HKR,,Example,,"Exibir uma cadeia de caracteres ""exemplo"""

    O valor do Registro será definido com o seguinte valor:

    Exibir uma cadeia de caracteres "example"

Limites de tamanho INF

  • O comprimento máximo, em caracteres, de um campo de arquivo INF, antes da substituição da cadeia de caracteres e incluindo um caractere NULL de terminação, é 4096.

  • Após a substituição da cadeia de caracteres, o comprimento máximo, em caracteres, de uma cadeia de caracteres de arquivo INF é 4096, que inclui um caractere NULL de terminação.

  • No entanto, lembre-se de que Plug and Play (PnP) pode impor um limite mais restritivo para determinados campos de arquivo INF que ele reconhece ou usa, como descrição do dispositivo, provedor de driver e fabricante de dispositivos.