Usar Dirids

Muitos dos diretórios que aparecem em arquivos INF podem ser expressos usando identificadores de diretório (dirids), que são números que identificam diretórios específicos. Os aplicativos podem usar, mas não reatribuir, os diretórios definidos pelo sistema associados a dirids cujos valores são de -1 a 32.767.

Para criar dirids com valores definidos pelo usuário entre 32.768 e 65.534 ou de 65.536 em diante, use a função função SetupSetDirectoryId (descrita na documentação do SDK do Microsoft Windows).

Um dirid com um valor de 65.535 é considerado sinônimo de um dirid com um valor de -1, embora o último (dirid -1) seja preferido.

Se você pretende usar dirids no arquivo INF, considere as duas diretrizes a seguir:

  1. Quando a sintaxe de uma entrada de arquivo INF especifica explicitamente um valor dirid (a seção INF DestinationDirs, por exemplo), expresse o valor em questão como número.

    O exemplo a seguir demonstra essa sintaxe.

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. Quando a sintaxe de uma entrada de arquivo INF especifica um caminho de arquivo, você pode usar uma substituição de cadeia de caracteres fornecida pelo sistema para representar parte do caminho ou o caminho na íntegra. Essa substituição tem a seguinte forma:

    %dirid%

    O formulário consiste em um caractere de porcentagem (%), seguido pelo dirid do diretório que você deseja especificar, seguido por outro caractere de porcentagem (%). Um caractere de barra invertida () final separa a expressão de um nome de arquivo seguinte ou de diretórios adicionais no caminho.

    O exemplo a seguir demonstra essa sintaxe.

    [aic78xx_Service_Inst]
    ServiceBinary = %12%\aic78xx.sys
    

    Quando totalmente expandido, o caminho mostrado no exemplo anterior passa a ser c:\windows\system32\drivers\aic78xx.sys (supondo que o Windows tenha instalado no diretório c:\windows). Lembre-se de que a substituição de cadeia de caracteres, ou formulário %dirid%, can pode ser usada em qualquer lugar em que uma cadeia de caracteres seja esperada, com exceção da seção de cadeias de caracteres INF do arquivo INF.

    Os dois exemplos a seguir mostram como a substituição de cadeia de caracteres não deve ser usada.

    [DestinationDirs]
    DefaultDestDir = %11%  ; Error! - number expected
    
    [aic78xx_Service_Inst]
    ServiceBinary = 12\aic78xx.sys  ; Error! - unknown directory name
    

    No primeiro exemplo, a sintaxe da entrada DefaultDestDir requer que o valor seja um número. No entanto, a expressão %11% se expande para uma cadeia de caracteres. No segundo exemplo, o gravador INF aparentemente pretendia definir o valor da entrada ServiceBinary para um arquivo no diretório que contém drivers (veja a tabela a seguir para obter mais informações). O erro ocorre porque o Windows procura o arquivo especificado em um diretório chamado "12", que provavelmente não existe no computador.

A tabela a seguir mostra vários dirids comumente usados, bem como os diretórios que eles representam. Os valores mais especificados por arquivos INF de dispositivo e arquivos INF de driver são listados na parte superior da tabela.

Como parte dos requisitos de isolamento do pacote de drivers, um driver deve ser executado a partir da loja de drivers e usar o DIRID 13 para especificar o local dos arquivos do pacote de driver na instalação. Do Windows 11, versão 24H2, em diante, alguns dos dirids mais usados foram preteridos ao enviar seu INF para uma assinatura WHQL. Para obter informações, consulte InfVerif /h.

Valor Diretório de destino Versão preterida

01

SourceDrive:\pathname (o diretório do qual o arquivo INF foi instalado)

24H2 do Windows 11

10

Diretório do Windows.

Isso equivale a %SystemRoot%.

11

Diretório do sistema.

Isso equivale a %SystemRoot%\system32 para Windows 2000 e versões posteriores do Windows.

12

Diretório de drivers.

Isso equivale a %SystemRoot%\system32\drivers para Windows 2000 e versões posteriores do Windows.

13

Diretório de Repositório de drivers do pacote de drivers.

Para Windows 8.1 e versões posteriores do Windows, especifica o caminho para o diretório do repositório de drivers em que o pacote de driver foi importado.

Não use DelFiles em um arquivo para o qual DestinationDirs inclui dirid 13.

O subdiretório opcional na seção SourceDiskFiles de um arquivo deve corresponder ao subdiretório na seção DestinationDirs da entrada que se aplica a esse arquivo.

Não use CopyFiles para renomear um arquivo para o qual DestinationDirs inclui dirid 13.

Para obter mais informações sobre como usar o dirid 13, veja Executar do repositório de drivers.

17

Diretório de arquivos INF

24H2 do Windows 11

18

Diretório de ajuda

24H2 do Windows 11

20

Diretório de fontes

24H2 do Windows 11

21

Diretório de espectadores

24H2 do Windows 11

23

Diretório de cores (ICM) (não usado para instalar drivers de impressora)

24

Diretório raiz do disco do sistema.

Este é o diretório raiz do disco no qual os arquivos do Windows estão instalados. Por exemplo, se dirid 10 for "C:\winnt", então dirid 24 será "C:\".

24H2 do Windows 11

25

Diretório compartilhado

24H2 do Windows 11

30

Diretório raiz do disco de inicialização, também conhecido como "partição do sistema ARC". (Este pode ou não ser o mesmo diretório representado pelo dirid 24.)

24H2 do Windows 11

50

Diretório do sistema

Isso equivale a %SystemRoot%\system.

24H2 do Windows 11

51

Diretório de spool (não sado para instalar drivers de impressora; veja Dirids de impressora)

52

Diretório de drivers de spool (não usado para instalar drivers de impressora)

53

Diretório de perfil de usuário

24H2 do Windows 11

54

Diretório em que Ntldr.exe e Osloader.exe estão localizados

24H2 do Windows 11

55

Diretório de processadores de impressão (não usado para instalar drivers de impressora)

-1

Caminho absoluto

24H2 do Windows 11

Os valores Dirid de 16384 a 32767 são reservados para pastas especiais do shell. A tabela a seguir mostra valores dirid para essas pastas.

Valor Pasta especial do shell Versão preterida

16406

Todos os Usuários\Menu Iniciar

24H2 do Windows 11

16407

Todos os Usuários\Menu Iniciar\Programas

24H2 do Windows 11

16408

Todos os Usuários\Menu Iniciar\Programas\Inicialização

24H2 do Windows 11

16409

Todos os Usuários\Área de Trabalho

24H2 do Windows 11

16415

Todos os Usuários\Favoritos

24H2 do Windows 11

16419

Todos os Usuários\Application Data

24H2 do Windows 11

16422

Arquivos de Programas

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Arquivos de Programas\Common

16428

%ProgramFiles(x86)%\Common

16429

Todos os Usuários\Modelos

24H2 do Windows 11

16430

Todos os Usuários\Documentos

24H2 do Windows 11

Além dos valores na tabela definidos em Setupapi.h, você pode usar qualquer um dos valores CSIDL_Xxx definidos em Shlobj.h. Para definir um valor dirid para uma pasta não listada nesta tabela, adicione 16384 (0x4000) ao valor CSIDL_Xxx. Para obter mais informações sobre os valores CSIDL_Xxx, consulte a documentação do SDK do Windows.