Использование Dirids

Многие каталоги, отображаемые в INF-файлах, могут быть выражены с помощью идентификаторов каталогов (диридов), которые являются числами, определяющими определенные каталоги. Приложения могут использовать, но не могут переназначить системные каталоги, связанные с диридами , значения которых — от -1 до 32767.

Чтобы создать дириды с пользовательскими значениями от 32768 до 65534 или 65536 и выше, используйте функцию SetupSetDirectoryId (описанную в документации по пакету SDK Для Microsoft Windows).

Помните, что дирид со значением 65535 считается синонимом дирида со значением -1, хотя последний (dirid -1) предпочтителен.

Если вы планируете использовать дириды в INF-файле, рассмотрите следующие два правила:

  1. Если синтаксис для записи INF-файла явным образом указывает значение с ошибкой (например, в разделе INF DestinationDirs), выразите это значение в виде числа.

    В следующем примере показан этот синтаксис:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. Если синтаксис для записи INF-файла указывает путь к файлу, можно использовать подстановку строки, предоставленной системой, для представления части или всего этого пути. Эта подстановка имеет следующую форму:

    %dirid%

    Эта форма состоит из символа процента (%), за которым следует указать каталог, за которым следует указать другой процент (%) символ. Завершающий символ обратной косой черты () отделяет это выражение от следующего имени файла или дополнительных каталогов в пути.

    В следующем примере показан этот синтаксис:

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

    При полном развертывании путь, показанный в предыдущем примере, становится драйверами\c:\windows\system32\aic78xx.sys (если предполагается, что Windows установлен в каталоге c:\windows). Помните, что подстановка строки или форма %dirid% может использоваться в любом месте, где ожидается строка, за исключением раздела INF Strings в INF-файле.

    В двух следующих примерах показано, как не следует использовать подстановку строк.

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

    В первом примере синтаксис записи DefaultDestDir требует, чтобы его значение было числом. Однако выражение %11% расширяется в строку. Во втором примере средство записи INF, по-видимому, предназначено для задания значения для записи ServiceBinary в файле в каталоге, который содержит драйверы (дополнительные сведения см. в следующей таблице). Ошибка возникает из-за того, что Windows ищет указанный файл в каталоге с именем "12", который, вероятно, не существует на компьютере.

В следующей таблице показаны несколько часто используемых диридов и каталогов, которые они представляют. Значения, наиболее часто указанные в INF-файлах устройства и INF-файлах драйвера, перечислены в верхней части таблицы.

В рамках требований к изоляции пакетов драйверов драйверу необходимо запустить из хранилища драйверов и использовать DIRID 13, чтобы указать расположение для файлов пакетов драйверов при установке. Начиная с Windows 11 версии 24H2 некоторые часто используемые дириды устарели при отправке INF-подписи WHQL. Дополнительные сведения см. в разделе InfVerif /h.

Значение Каталог назначения Выпуск не рекомендуется

01

SourceDrive:\pathname (каталог, из которого был установлен INF-файл)

Windows 11 24H2

10

Каталог Windows.

Это эквивалентно %SystemRoot%.

11

Системный каталог.

Это эквивалентно %SystemRoot%\system32 для Windows 2000 и более поздних версий Windows..

12

Каталог драйверов.

Это эквивалентно драйверам %SystemRoot%\system32\для Windows 2000 и более поздних версий Windows.

13

Каталог driver package's Driver Store .

Для Windows 8.1 и более поздних версий Windows указывает путь к каталогу Магазина драйверов, в котором был импортирован пакет драйвера.

Не используйте DelFiles в файле, для которого DestinationDirs включает 13.

Необязательный подкаталог в разделе SourceDiskFiles для файла должен соответствовать подкаталогу в разделе DestinationDirs для записи, которая применяется к этому файлу.

Не используйте CopyFiles для переименования файла, для которого DestinationDirs включает dirid 13.

Дополнительные сведения об использовании dirid 13 см. в разделе "Запуск из хранилища драйверов".

17

Каталог INF-файла

Windows 11 24H2

18

Каталог справки

Windows 11 24H2

20

Каталог шрифтов

Windows 11 24H2

21

Каталог средств просмотра

Windows 11 24H2

23

Каталог цветов (ICM) (не используется для установки драйверов принтера)

24

Корневой каталог диска системы.

Это корневой каталог диска, на котором установлены файлы Windows. Например, если значение dirid 10 равно C:\winnt, то значение 24 — C:\.

Windows 11 24H2

25

Общий каталог

Windows 11 24H2

30

Корневой каталог загрузочного диска, также известный как "системный раздел ARC". (Это может быть или не совпадать с каталогом, представленным dirid 24.)

Windows 11 24H2

50

Системный каталог

Это эквивалентно системе %SystemRoot%.\

Windows 11 24H2

51

Каталог Spool (не используется для установки драйверов принтера — см . раздел "Дириды принтера")

52

Каталог драйверов Spool (не используется для установки драйверов принтера)

53

Каталог профилей пользователей

Windows 11 24H2

54

Каталог, в котором находятся Ntldr.exe и Osloader.exe

Windows 11 24H2

55

Каталог процессоров печати (не используется для установки драйверов принтера)

-1

Абсолютный путь

Windows 11 24H2

Значения dirid от 16384 до 32767 зарезервированы для специальных папок оболочки. В следующей таблице показаны значения для этих папок.

Значение Специальная папка оболочки Выпуск не рекомендуется

16406

Все пользователи\Меню "Пуск"

Windows 11 24H2

16407

Все пользователи\Меню "Пуск"\Программы

Windows 11 24H2

16408

Все пользователи\Меню "Пуск"\"Программы\Запуск"

Windows 11 24H2

16409

Все пользователи\Desktop

Windows 11 24H2

16415

Все пользователи\Избранное

Windows 11 24H2

16419

Все пользователи\Данные приложения

Windows 11 24H2

16422

Файлы программы

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

Все пользователи\Шаблоны

Windows 11 24H2

16430

Все пользователи\Документы

Windows 11 24H2

Помимо значений в этой таблице, определенных в Setupapi.h, можно использовать любое из значений CSIDL_Xxx, определенных в Shlobj.h. Чтобы определить значение dirid для папки, не указанной в этой таблице, добавьте 16384 (0x4000) в значение CSIDL_Xxx . Дополнительные сведения о значениях CSIDL_Xxx см. в документации по пакету SDK для Windows.