Usando Dirids

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

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 do 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 o último (dirid -1) seja preferencial.

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 DestinationDirs inf, 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 o seguinte formulário:

    %dirid%

    Esse formulário consiste em um percentual (%) caractere, seguido pelo dirid para o diretório que você deseja especificar, seguido por outro caractere percentual (%). Um caractere de barra invertida de terminação () 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 drivers c:\windows\system32\\aic78xx.sys (supondo que o Windows foi instalado no diretório c:\windows). Lembre-se de que a substituição de cadeia de caracteres, ou %dirid% form, pode ser usada em qualquer lugar em que uma cadeia de caracteres é esperada, com exceção da seção 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 exige que seu 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 (consulte 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 e os diretórios que eles representam. Os valores mais comumente especificados por arquivos INF do dispositivo e arquivos INF do driver são listados na parte superior da tabela.

Valor Diretório de destino

01

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

10

Diretório do Windows.

Isso é equivalente a %SystemRoot%.

11

Diretório do sistema.

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

12

Diretório drivers.

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

13

Diretório do Driver Store do pacote de driver.

Para Windows 8.1 e versões posteriores do Windows, especifica o caminho para o diretório da Loja de Driver para o qual 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 para o qual DestinationDirs inclui dirid 13.

Para obter mais informações sobre como usar o dirid 13, consulte Executar no Repositório de Driver.

17

Diretório de arquivos INF

18

Diretório de ajuda

20

Diretório de fontes

21

Diretório visualizadores

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:\".

25

Diretório compartilhado

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 pelo dirid 24.)

50

Diretório do sistema

Isso é equivalente a %SystemRoot%\system.

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

54

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

55

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

-1

Caminho absoluto

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

16406

Menu Todos os Usuários\Iniciar

16407

Todos os Usuários\Menu Iniciar\Programas

16408

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

16409

Todos os Usuários\Área de Trabalho

16415

Todos os Usuários\Favoritos

16419

Todos os Usuários\Dados do Aplicativo

16422

Arquivos de Programas

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Arquivos de Programas\Comum

16428

%ProgramFiles(x86)%\Common

16429

Todos os Usuários\Modelos

16430

Todos os Usuários\Documentos

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.