Usando Dirids

Muitos dos diretórios que aparecem nos ficheiros INF podem ser expressos usando identificadores de diretório (dirids), que são números que identificam diretórios específicos. As aplicações podem usar, mas não podem reatribuir, os diretórios definidos pelo sistema associados a dirids cujos valores vão de -1 a 32767.

Para criar dirids com valores definidos pelo utilizador de 32768 a 65534, ou 65536 e superiores, use a função SetupSetDirectoryId (descrita na documentação do SDK do Microsoft Windows).

Tenha em atenção que um dirid com valor 65535 é considerado sinónimo de um dirid com valor -1, embora este último (dirid -1) seja preferido.

Se pretende usar dirids no seu ficheiro INF, considere as seguintes duas diretrizes:

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

    O exemplo seguinte demonstra esta sintaxe:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. Quando a sintaxe de uma entrada de ficheiro INF especifica um caminho de ficheiro, pode usar uma substituição de strings fornecida pelo sistema para representar parte ou a totalidade deste caminho. Esta substituição tem a seguinte forma:

    % dirid%

    Este formulário consiste num carácter percentual (%), seguido do dirid do diretório que pretende especificar, seguido de outro carácter percentual (%). Um carácter de barra invertida final () separa esta expressão de um nome de ficheiro seguinte ou de diretórios adicionais no caminho.

    O exemplo seguinte demonstra esta sintaxe:

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

    Quando totalmente expandido, o caminho mostrado no exemplo anterior torna-se c:\windows\system32\drivers\aic78xx.sys (assumindo que o Windows foi instalado no diretório \windows). Esteja ciente de que a substituição de cadeias, ou a forma %dirid%, pode ser usada em qualquer lugar que uma cadeia seja esperada, com exceção da secção INF Strings do ficheiro INF.

    Os dois exemplos seguintes mostram como a substituição de cadeias não deve ser utilizada.

    [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 exige que o seu valor seja um número. No entanto, a expressão %11% expande-se para uma string. No segundo exemplo, o autor do INF aparentemente pretendia definir o valor da entrada ServiceBinary para um ficheiro no diretório que contém os drivers (ver a tabela seguinte para mais informações). O erro ocorre porque o Windows procura o ficheiro especificado numa pasta chamada "12", que provavelmente não existe no computador.

A tabela seguinte mostra vários dirids comumente usados e os diretórios que representam. Os valores mais frequentemente especificados pelos ficheiros INF do dispositivo e pelos ficheiros INF do driver estão listados na parte superior da tabela.

Como parte dos requisitos de Isolamento do Pacote de Drivers, um driver deve ser Executado a partir do Driver Store e usar o DIRID 13 para especificar a localização dos ficheiros do pacote de drivers na instalação. A partir do Windows 11, versão 24H2, alguns dos dirids mais usados foram preteridos ao submeter o seu INF para assinatura WHQL. Para mais informações, consulte InfVerif /h.

Valor Diretório de destino Versão descontinuada

01

SourceDrive:\pathname (o diretório de onde o ficheiro INF foi instalado)

Windows 11 24H2

10

Diretório do Windows.

Isto é equivalente a %SystemRoot%.

11

Diretório do sistema.

Isto é equivalente ao %SystemRoot%\system32 para Windows 2000 e versões posteriores do Windows..

12

Diretório de drivers.

Isto é equivalente a %SystemRoot%\system32\ para o Windows 2000 e versões posteriores do Windows.

13

Diretório da Driver Store do pacote de drivers.

Para Windows 8.1 e versões posteriores do Windows, especifica o caminho para o diretório do Driver Store onde o pacote de drivers foi importado.

Não use DelFiles num ficheiro para o qual o DestinationDirs inclui dirid 13.

O subdiretório opcional na secção SourceDiskFiles para um ficheiro deve corresponder ao subdiretório na secção DestinationDirs para a entrada que se aplica a este ficheiro.

Não uses CopyFiles para renomear um ficheiro para o qual DestinationDirs inclui dirid 13.

Para mais informações sobre o uso do dirid 13, consulte Run from Driver Store.

17

Diretório de ficheiros INF

Windows 11 24H2

18

Diretório de ajuda

Windows 11 24H2

20

Diretório de fontes

Windows 11 24H2

21

Diretório de espectadores

Windows 11 24H2

23

Diretório de cor (ICM) (não utilizado para instalar drivers de impressora)

24

Diretório raiz do disco do sistema.

Este é o diretório raiz do disco onde os ficheiros do Windows estão instalados. Por exemplo, se dirid 10 é "C:\winnt", então dirid 24 é "C:\".

Windows 11 24H2

25

Diretório partilhado

Windows 11 24H2

30

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

Windows 11 24H2

50

Diretório do sistema

Isto é equivalente a %SystemRoot%\system.

Windows 11 24H2

51

Diretório Spool (não usado para instalar drivers de impressora − ver Printer Dirids)

52

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

53

Diretório do perfil de utilizador

Windows 11 24H2

54

Diretório onde se encontram Ntldr.exe e Osloader.exe

Windows 11 24H2

55

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

-1

Caminho absoluto

Windows 11 24H2

Os valores de dirid de 16384 a 32767 são reservados para pastas especiais da Shell. A tabela seguinte mostra os valores de dirid destas pastas.

Valor Pasta especial Shell Versão descontinuada

16406

Todos os Utilizadores\Menu Iniciar

Windows 11 24H2

16407

Todos os Utilizadores\Menu Iniciar\Programas

Windows 11 24H2

16408

Todos os Utilizadores\Menu Iniciar do Windows\Programas\Arranque

Windows 11 24H2

16409

Todos os Utilizadores\Ambiente de Trabalho

Windows 11 24H2

16415

Todos os Utilizadores\Favoritos

Windows 11 24H2

16419

Todos os Utilizadores\Dados da Aplicação

Windows 11 24H2

16422

Ficheiros do Programa

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

Todos os Utilizadores\Modelos

Windows 11 24H2

16430

Todos os Utilizadores\Documentos

Windows 11 24H2

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