Использование Dirids
Многие каталоги, отображаемые в INF-файлах, могут быть выражены с помощью идентификаторов каталогов (диридов), которые являются числами, определяющими определенные каталоги. Приложения могут использовать, но не могут переназначить системные каталоги, связанные с диридами , значения которых — от -1 до 32767.
Чтобы создать дириды с пользовательскими значениями от 32768 до 65534 или 65536 и выше, используйте функцию SetupSetDirectoryId (описанную в документации по пакету SDK Для Microsoft Windows).
Помните, что дирид со значением 65535 считается синонимом дирида со значением -1, хотя последний (dirid -1) предпочтителен.
Если вы планируете использовать дириды в INF-файле, рассмотрите следующие два правила:
Если синтаксис для записи INF-файла явным образом указывает значение с ошибкой (например, в разделе INF DestinationDirs), выразите это значение в виде числа.
В следующем примере показан этот синтаксис:
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
Если синтаксис для записи 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.