使用 Dirids
許多出現在 INF 檔案中的目錄可以使用目錄識別碼(dirids)來表示,這些目錄是識別特定目錄的數位。 應用程式可以使用,但無法重新指派系統定義的目錄,這些目錄與 其值從 -1 到 32767 的 dirids 相關聯。
若要使用從 32768 到 65534 或 65534 或 65536 和更新版本的使用者定義值建立 dirids ,請使用 SetupSetDirectoryId 函式(如 Microsoft Windows SDK 檔中所述)。
請注意,具有值 65535 的 dirid 被視為與具有 -1 值的 dirid 同義字,但後者是慣用的 (dirid -1) 。
如果您想要在 INF 檔案中使用 dirids ,請考慮下列兩個指導方針:
當 INF 檔案項目的語法明確指定 dirid 值(例如 INF DestinationDirs 區段),以數位表示該值。
下列範例示範此語法:
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
當 INF 檔案項目的語法指定檔案路徑時,您可以使用系統提供的字串替代來表示部分或全部路徑。 此替代格式如下:
%dirid%
此窗體包含一個percent ≤字元,後面接著 您要指定之目錄的 dirid ,後面接著另一個percent\ 字元。 終止反斜杠 () 字元會將此表達式與路徑中的下列檔名或其他目錄分隔開來。
下列範例示範此語法:
[aic78xx_Service_Inst] ServiceBinary = %12%\aic78xx.sys
完全展開時,上一個範例中顯示的路徑會變成 c:\windows\system32\驅動程式\aic78xx.sys(假設 Windows 已安裝在 c:\windows 目錄中)。 請注意,字串替代或 %dirid% 表單可以在預期字串的任何位置使用,但 INF 檔案的 INF Strings 區段除外。
下列兩個範例顯示不應該使用字串替代的方式。
[DestinationDirs] DefaultDestDir = %11% ; Error! - number expected [aic78xx_Service_Inst] ServiceBinary = 12\aic78xx.sys ; Error! - unknown directory name
在第一個範例中 ,DefaultDestDir 項目的語法需要其值為數位。 不過,%11% 表示式會展開為字串。 在第二個範例中,INF 寫入器顯然打算將 ServiceBinary 專案的值設定為包含驅動程式的目錄中的檔案(如需詳細資訊,請參閱下表)。 發生此錯誤的原因是 Windows 會在名為 「12」 的目錄中尋找指定的檔案,該檔案可能不存在在計算機上。
下表顯示數個常用的 dirids,以及它們所代表的目錄。 裝置 INF 檔案和驅動程式 INF 檔案最常指定的值會列在資料表頂端。
作為驅動程式套件隔離需求的一部分,驅動程式必須從驅動程式存放區執行,並使用 DIRID 13 來指定安裝時驅動程式套件檔案的位置。 從 Windows 11 開始,在提交 INF 以取得 WHQL 簽章時,某些常用的 dirids 已被取代。 如需詳細資訊,請參閱 InfVerif /h。
值 | 目的地目錄 | 版本已被取代 |
---|---|---|
01 |
SourceDrive:\pathname (安裝 INF 檔案的目錄) |
Windows 11 24H2 |
10 |
Windows 目錄。 這相當於 %SystemRoot% 。 |
|
11 |
系統目錄。 這相當於 Windows 2000 和更新版本的 %SystemRoot%\system32。 |
|
12 |
驅動程序目錄。 這相當於 Windows 2000 和更新版本的 %SystemRoot%\system32\驅動程式。 |
|
13 |
驅動程式套件的 驅動程式存放區 目錄。 針對 Windows 8.1 和更新版本的 Windows,指定驅動程式存放區目錄的路徑,其中已匯入驅動程式套件。 請勿在 DestinationDirs 包含 dirid 13 的檔案上使用 DelFiles。 檔案之 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”,則 dirid 24 是 “C:\”。 |
Windows 11 24H2 |
25 |
共享目錄 |
Windows 11 24H2 |
30 |
開機磁碟的根目錄,也稱為「ARC 系統磁碟分區」。 (這可能或可能與 dirid 24 所代表的目錄不同。 |
Windows 11 24H2 |
50 |
系統目錄 這相當於 %SystemRoot%\system。 |
Windows 11 24H2 |
51 |
多任務緩衝處理目錄 (未用於安裝印表機驅動程式 > 請參閱印表機 Dirids) |
|
52 |
多工作緩衝驅動程式目錄(未 用於安裝印表機驅動程式) |
|
53 |
使用者配置檔目錄 |
Windows 11 24H2 |
54 |
Ntldr.exe和Osloader.exe所在的目錄 |
Windows 11 24H2 |
55 |
印表處理器目錄(未 用於安裝印表機驅動程式 ) |
|
-1 |
絕對路徑 |
Windows 11 24H2 |
從 16384 到 32767 的 Dirid 值會保留給特殊殼層資料夾。 下表顯示 這些資料夾的 dirid 值。
值 | Shell 特殊資料夾 | 版本已被取代 |
---|---|---|
16406 |
所有使用者\開始功能表 |
Windows 11 24H2 |
16407 |
所有使用者\開始功能表\程式 |
Windows 11 24H2 |
16408 |
所有使用者\開始功能表\程式\啟動 |
Windows 11 24H2 |
16409 |
所有使用者\桌面 |
Windows 11 24H2 |
16415 |
所有使用者\我的最愛 |
Windows 11 24H2 |
16419 |
所有使用者\應用程式數據 |
Windows 11 24H2 |
16422 |
Program Files |
|
16425 |
%SystemRoot%\SysWOW64 |
|
16426 |
%ProgramFiles(x86)% |
|
16427 |
Program Files\Common |
|
16428 |
%ProgramFiles(x86)%\Common |
|
16429 |
所有使用者\範本 |
Windows 11 24H2 |
16430 |
所有使用者\檔 |
Windows 11 24H2 |
除了 Setupapi.h 中定義的這個資料表值之外,您還可以使用 Shlobj.h 中定義的任何 CSIDL_Xxx 值。 若要定義 此表格中未列出的資料夾的 dirid 值,請將 16384 (0x4000) 新增至 CSIDL_Xxx 值。 如需CSIDL_Xxx 值的詳細資訊,請參閱 Windows SDK 檔。