Использование dirids
Многие каталоги, отображаемые в INF-файлах, можно выразить с помощью идентификаторов каталогов (dirids), которые представляют собой числа, определяющие определенные каталоги. Приложения могут использовать, но не могут переназначить системные каталоги, связанные с dirids , значения которых находятся в диапазоне от -1 до 32767.
Чтобы создать ограничения с определяемыми пользователем значениями от 32768 до 65534 или 65536 и выше, используйте функцию SetupSetDirectoryId (описанную в документации по Microsoft Windows SDK).
Имейте в виду, что dirid со значением 65535 считается синонимом dirid со значением -1, хотя последний (dirid -1) является предпочтительным.
Если вы планируете использовать dirids в 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-файлами драйвера, перечислены в верхней части таблицы.
Значение | Каталог назначения |
---|---|
01 |
SourceDrive:\pathname (каталог, из которого был установлен INF-файл) |
10 |
Каталог Windows. Это эквивалентно %SystemRoot%. |
11 |
Системный каталог. Это эквивалентно %SystemRoot%\system32 для Windows 2000 и более поздних версий Windows.. |
12 |
Каталог драйверов. Это эквивалентнодрайверам%SystemRoot%\system32\ для Windows 2000 и более поздних версий Windows. |
13 |
Каталог хранилища драйверов пакета драйверов . Для Windows 8.1 и более поздних версий Windows указывает путь к каталогу Хранилища драйверов, в который был импортирован пакет драйверов. Не используйте DelFiles в файле, для которого DestinationDirsсодержит 13. Необязательный подкаталог в разделе SourceDiskFiles для файла должен соответствовать подкаталогу в разделе DestinationDirs для записи, которая применяется к этому файлу. Не используйте CopyFiles для переименования файла, для которого DestinationDirsсодержит 13. Дополнительные сведения об использовании dirid 13 см. в разделе Запуск из хранилища драйверов. |
17 |
Каталог INF-файла |
18 |
Каталог справки |
20 |
Каталог шрифтов |
21 |
Каталог средств просмотра |
23 |
Каталог Color (ICM) (не используется для установки драйверов принтера) |
24 |
Корневой каталог системного диска. Это корневой каталог диска, на котором установлены файлы Windows. Например, если dirid 10 — "C:\winnt", то dirid 24 — "C:\". |
25 |
Общий каталог |
30 |
Корневой каталог загрузочного диска, также известный как "системный раздел ARC". (Это может быть или не тот же каталог, что и каталог, представленный dirid 24.) |
50 |
Системный каталог Это эквивалентно %SystemRoot%\system. |
51 |
Каталог Spool (не используется для установки драйверов принтера — см. раздел Printer Dirids) |
52 |
Каталог драйверов очереди (не используется для установки драйверов принтера) |
53 |
Каталог профилей пользователей |
54 |
Каталог, в котором находятся Ntldr.exe и Osloader.exe |
55 |
Каталог процессоров печати (не используется для установки драйверов принтера) |
-1 |
Абсолютный путь |
Значения dirid от 16384 до 32767 зарезервированы для специальных папок оболочки. В следующей таблице приведены подробные значения для этих папок.
Значение | Специальная папка оболочки |
---|---|
16406 |
Все пользователи\Меню "Пуск" |
16407 |
Все пользователи\Меню "Пуск"\Программы |
16408 |
Все пользователи\Меню пуск\Программы\Запуск |
16409 |
Все пользователи\Рабочий стол |
16415 |
Все пользователи\Избранное |
16419 |
Все пользователи\Данные приложения |
16422 |
Программные файлы |
16425 |
%SystemRoot%\SysWOW64 |
16426 |
%ProgramFiles(x86)% |
16427 |
Program Files\Common |
16428 |
%ProgramFiles(x86)%\Common |
16429 |
Все пользователи\шаблоны |
16430 |
Все пользователи\Документы |
Помимо значений в этой таблице, определенных в Setupapi.h, можно использовать любые значения CSIDL_Xxx, определенные в Shlobj.h. Чтобы определить малое значение для папки, не указанной в этой таблице, добавьте 16384 (0x4000) в значение CSIDL_Xxx . Дополнительные сведения о значениях CSIDL_Xxx см. в документации по Windows SDK.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по