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 de 32768 a 65534 ou 65536 ou mais, use a função SetupSetDirectoryId (descrita na documentação do SDK Microsoft Windows).

Lembre-se de que um dirid com um valor de 65535 é considerado sinônimo de um dirid com um valor de -1, embora este último (dirid -1) seja preferido.

Se você pretende usar dirids em seu 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 esse valor como um 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 ou todo esse caminho. Essa substituição tem a seguinte forma:

    % dirid%

    Esse formulário consiste em um caractere percentual (%), seguido pelo dirid do diretório que você deseja especificar, seguido por outro caractere percentual (%). Um caractere de barra invertida terminante () separa essa expressão de um nome de arquivo a seguir ou 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 torna-se c:windows\\\\ (supondo que Windows foi instalado no diretório c:\windows). Lembre-se de que a substituição de cadeia de caracteres, ou a forma %dirid%, pode ser usada em qualquer lugar em que uma cadeia de caracteres seja esperada, com exceção da seção Strings do 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 seu valor seja um número. No entanto, a expressão %11% se expande para uma cadeia de caracteres. No segundo exemplo, o autor do INF aparentemente pretendia definir o valor da entrada ServiceBinary para um arquivo no diretório que contém drivers (consulte a tabela a seguir para obter mais informações). O erro ocorre porque 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 e os diretórios que eles representam. Os valores mais comumente especificados pelos arquivos INF do dispositivo e arquivos INF do 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. A partir do Windows 11, versão 24H2, alguns dos dirids comumente usados foram preteridos ao enviar seu INF para uma assinatura WHQL. Para obter mais 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 é equivalente a %SystemRoot%.

11

Diretório do sistema.

Isso é equivalente 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 do Driver Store do pacote de driver.

Para o Windows 8.1 e versões posteriores do Windows, especifica o caminho para o diretório Driver Store para onde 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 para um arquivo deve corresponder ao subdiretório na seção DestinationDirs para a entrada que se aplica a esse arquivo.

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

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

17

Diretório do arquivo 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.

Esse é o diretório raiz do disco no qual os arquivos do Windows são instalados. Por exemplo, se dirid 10 for "C:\winnt", 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". (Esse pode ou não ser o mesmo diretório que o representado por dirid 24.)

24H2 do Windows 11

50

Diretório do sistema

Isso é equivalente a %SystemRoot%\system.

24H2 do Windows 11

51

Diretório Spool (não usado para instalar drivers de impressora – consulte Dirids de Impressora)

52

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

53

Diretório de perfil do usuário

24H2 do Windows 11

54

Diretório onde 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 de shell especiais. 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\Dados de Aplicativos

24H2 do Windows 11

16422

Arquivos de Programas

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\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 nesta 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 valores CSIDL_Xxx, consulte a documentação do SDK do Windows.