使用 Dirids

INF 文件中出现的许多目录都可以通过使用目录标识符来表示 (dirids) ,这些目录是标识特定目录的数字。 应用程序可以使用,但不能重新分配与值从 -1 到 32767 的 dirid 关联的系统定义目录。

若要使用 32768 到 65534 或 65536 及以后的用户定义值创建 dirids,请使用 Microsoft Windows SDK 文档) 中所述的 SetupSetDirectoryId 函数 (。

请注意,值为 65535 的 dirid 被视为与值为 -1 的 dirid 的同义词,尽管后者 (dirid -1) 。

如果打算在 INF 文件中使用 dirids ,请考虑以下两个准则:

  1. 当 INF 文件条目的语法显式指定 inF DestinationDirs 节 (一个 dirid 值(例如,) )时,将该值表示为数字。

    以下示例演示了此语法:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. 当 INF 文件条目的语法指定文件路径时,可以使用系统提供的字符串替换来表示此路径的一部分或全部。 此替换形式如下:

    %dirid%

    此形式由百分比 (%) 字符组成,后跟要指定的目录的 dirid ,后跟另一个百分比 (%) 字符。 终止反斜杠 () 字符将此表达式与路径中的以下文件名或其他目录分隔开。

    以下示例演示了此语法:

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

    完全展开后,上一个示例中显示的路径变为 c:\windows\system32\驱动程序\aic78xx.sys (假定 Windows 安装在 c:\windows 目录) 中。 请注意,字符串替换或 %dirid% 格式可以在需要字符串的任何位置使用,但 INF 文件的 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

系统目录。

这相当于 Windows 2000 及更高版本的 Windows 的 %SystemRoot%\system32

12

Drivers 目录。

这相当于适用于 Windows 2000 \ 及更高版本的 Windows 的 %SystemRoot%\system32驱动程序

13

驱动程序包的 驱动程序存储 目录。

对于Windows 8.1及更高版本的 Windows,指定驱动程序包导入到的驱动程序存储目录的路径。

不要对包含dirid 13 的文件使用 DelFiles

文件的 SourceDiskFiles 节中的可选子目录必须与适用于此文件的条目的 DestinationDirs 节中的子目录匹配。

不要使用 CopyFiles 重命名 包含dirid 13 的文件。

有关使用 dirid 13 的详细信息,请参阅 从驱动程序存储运行

17

INF 文件目录

18

帮助目录

20

字体目录

21

Viewer 目录

23

颜色目录 (ICM) ( 用于安装打印机驱动程序)

24

系统磁盘的根目录。

这是安装 Windows 文件的磁盘的根目录。 例如,如果 dirid 10 为“C:\winnt”,则 dirid 24 为“C:\”。

25

共享目录

30

启动磁盘的根目录,也称为“ARC 系统分区”。 (这可能与 dirid 24.) 表示的目录相同,也可能不是同一目录

50

系统目录

这等效于 %SystemRoot%\system

51

Spool 目录 (不用于安装打印机驱动程序 , 请参阅打印机 Dirids)

52

Spool 驱动程序目录 ( 用于安装打印机驱动程序)

53

用户配置文件目录

54

Ntldr.exeOsloader.exe所在的目录

55

打印处理器目录 ( 用于安装打印机驱动程序)

-1

绝对路径

从 16384 到 32767 的 Dirid 值是为特殊的 shell 文件夹保留的。 下表显示了这些文件夹的 dirid 值。

Shell 特殊文件夹

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 中定义的值外,还可以使用 Shlobj.h 中定义的任何 CSIDL_Xxx 值。 若要定义此表中未列出的文件夹 的 dirid 值,请将 16384 (0x4000) 添加到 CSIDL_Xxx 值。 有关 CSIDL_Xxx 值的详细信息,请参阅 Windows SDK 文档。