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 gravador do arquivo INF.

Cada seção contém entradas específicas da seção que são interpretadas por componentes de instalação do dispositivo. Algumas entradas começam com um palavra-chave predefinido. 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 o Windows interpretar durante a instalação.

Outras entradas de arquivo INF não apontam para outras seções, mas fornecem informações que o Windows usa durante a instalação, como nomes de arquivo, valores de 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 o Windows inicia uma instalação, ele primeiro procura uma seção versão inf para verificar a validade do arquivo INF. Em seguida, ele inicia a instalação localizando uma seção Fabricante do INF. Esta seção contém diretivas para seções modelos INF, 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 cadeia de caracteres 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, version, VERSION e Version 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órias 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 não aboldados ([,]). Por outro lado, colchetes em negrito ([, ]) são elementos obrigatórios da entrada na qual estão contidos. No exemplo a seguir, os colchetes ao redor de Version são necessários, enquanto os colchetes em tornode 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 ordem específica, por convenção, mas o 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 inf-writer-defined.

    Por exemplo, [Manufacturer] especifica o início da seção Fabricante nomeada pelo sistema, enquanto [Std.Mfg] representa um nome de seção de Modelos definidos pelo gravador INF específico.

    Um nome de seção tem um comprimento máximo de 255 caracteres no Windows 2000 e versões posteriores do 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 aspas duplas ("), um nome de seção definido pelo gravador INF deve ser uma cadeia de caracteres sem aspas exclusiva para o INF de caracteres explicitamente visíveis, excluindo determinados caracteres com significados específicos de INF. Em particular, um nome de seção sem aspas referenciado por uma entrada ou diretiva de seção não pode ter espaços à esquerda ou à direita, um caractere de avanço de linha, um caractere de retorno ou qualquer caractere de controle invisível, e não deve conter guias. Além disso, ele não pode conter nenhum dos caracteres de colchete ([ ]), um caractere de porcentagem única (%), 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 em 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 " será 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 aos caracteres de espaço e ponto e vírgula como [;; Std Mfg ].

Usando tokens de cadeia de caracteres

  • 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 do formato %strkey%. Na seção Cadeias de caracteres INF 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 instalaçã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 avanço de linha. Portanto, o editor de texto usado para criar um arquivo INF não deve inserir caracteres de retorno ou alimentação de linha após algum número arbitrário determinado pelo editor de caracteres.

  • O caractere de barra invertida (\) pode ser usado como um continuador de linha explícito em uma entrada ou diretiva. No entanto, caracteres de barra invertida também são usados em 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 delas é 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. O 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 feed de linha ou um caractere de retorno
  • 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 à direita.

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

    Filename=diskid[,[subdir][,size]]

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

    Filename=diskid,,size

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

    Filename=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 do caractere de aspas duplas com outro caractere de aspas duplas. Observe que a cadeia de caracteres deve estar dentro de uma "cadeia de caracteres entre aspas".

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

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

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

    Exibir uma cadeia de caracteres de "exemplo"

Limites de tamanho inf

  • O comprimento máximo, em caracteres, de um campo de arquivo INF, antes da substituição de 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 do dispositivo.