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