Partilhar via


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 pelos componentes de instalação do dispositivo. Algumas entradas começam com uma palavra-chave predefinida. Estas entradas são chamadas 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 arquivos, 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 o Windows inicia uma instalação, ele primeiro procura uma seção versão INF para verificar a validade do arquivo INF. Em seguida, é iniciada a instalação localizando uma seção do fabricante INF . Esta secção contém instruções para as seções INF Models, que, por sua vez, fornecem diretivas conducentes a várias seções INF DDInstall, com base no ID de hardware do dispositivo que está a ser instalado.

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

Sensibilidade a maiúsculas e minúsculas

  • Os nomes das seções, entradas e diretivas são insensíveis a maiúsculas e minúsculas. Por exemplo, versão, VERSÃOe Versão são especificações de nome de seção igualmente válidas dentro de um arquivo INF.

Conteúdos Obrigatórios e Opcionais

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

  • O conjunto de secções e entradas específicas de secção, assim como diretivas necessárias para instalar qualquer dispositivo particular e os seus drivers, pode depender um pouco do instalador de classe correspondente, se existir. 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 das definições de sintaxe, as entradas opcionais são delimitadas por colchetes sem negrito ([,]). Por outro lado, negrito parênteses ([, ]) são elementos obrigatórios da entrada em que estão contidos. No exemplo a seguir, os colchetes ao redor Versão são necessários, enquanto os colchetes ao redor Classe=nome da classe indicam que essa entrada é opcional.

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

Nomes das Secções

  • 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 pelo autor do INF.

    Por exemplo, [Fabricante] especifica o início da seção denominada Fabricante do 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 no Windows 2000 e versões posteriores do Windows.

    Cada seção termina no início de uma nova [section-name] ou na marca de fim de arquivo.

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

  • A menos que esteja entre aspas duplas ("), um nome de seção definido pelo escritor INF deve ser uma cadeia de caracteres sem aspas exclusiva para o INF de caracteres explicitamente visíveis, excluindo certos caracteres com significados específicos de INF. Em particular, um nome de seção não citado referenciado por uma entrada de seção ou diretiva 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 não deve conter guias. Além disso, ele não pode conter nenhum dos caracteres entre colchetes ([ ]), um único sinal de percentagem (%), um ponto e vírgula (;), quaisquer caracteres de aspas duplas internas ("), e não pode ter uma barra invertida (\) como o último caractere.

    Por exemplo, Std.Mfg e Std_Mfg são nomes de seção exclusivos e válidos quando referenciados por uma entrada de arquivo INF ou diretiva, 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 um "cadeia de caracteres entre aspas" substitui a maioria das restrições que foram descritas anteriormente em caracteres em nomes de seção referenciados. Um nome de seção delimitada pode conter quase todos os caracteres explícitos ou implicitamente visíveis, exceto o colchete de fechamento (]), desde que a seção correspondente no arquivo INF corresponda exatamente a esta "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 cadeia de caracteres

  • Muitos valores num ficheiro INF, incluindo nomes de secção definidos pelo redator de INF, podem ser expressos como tokens de chave de cadeia de caracteres do formulário %strkey%. 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 instalação converte o valor da cadeia de caracteres em Unicode.

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

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

  • Cada entrada e diretiva em uma seção termina com um caractere de retorno ou 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 indicador de continuação de linha explícito numa 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. 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 equivale 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 assume que os seguintes itens não têm relevância para o processo de instalação:

    • Quaisquer caracteres que sigam um ponto-e-vírgula na mesma linha, a menos que o ponto-e-vírgula apareça dentro de um "cadeia de caracteres entre aspas" ou %strkey% token
    • Qualquer linha vazia que contenha nada além de um feed de linha ou caractere de retorno
  • As vírgulas separam os valores fornecidos nas entradas de seção e nas diretivas.

    Uma entrada de arquivo INF ou diretiva 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 na secção SourceDisksFiles:

    nome do arquivo=diskid[,[subdir][,tamanho]]

    Uma entrada que omite o valor do subdir mas fornece o valor do tamanho 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 este formato:

    nome do arquivo=diskid

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

    Por exemplo, considere esta instrução numa secçã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 de seção e diretivas, escape o caractere de aspas duplas com outro caractere de aspas duplas. Observe que a string deve estar dentro de um "string entre aspas".

    Por exemplo, considere esta instrução na seção [add-registry-section]:

    HKR,,Exemplo,,"Exibir o texto ""exemplo"""

    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 de 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, esteja ciente de que o 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.