Dirids の使用
INF ファイルに表示されるディレクトリの多くは、特定のディレクトリを識別する番号であるディレクトリ識別子 (dirids) を使用して表現できます。 アプリケーションでは使用できますが、値が -1 から 32767 の dirid に関連付けられているシステム定義のディレクトリを再割り当てすることはできません。
32768 から 65534、または 65536 以降のユーザー定義値を持つ dirids を作成するには、SetupSetDirectoryId 関数を使用します (Microsoft Windows SDK ドキュメントで説明)。
値が 65535 の diridは 値 -1 の dirid と同義と見なされますが、後者 (dirid -1) が好ましいことに注意してください。
INF ファイルで dirids を使用 する場合は 、次の 2 つのガイドラインを考慮してください。
INF ファイル エントリの構文で dirid 値 (INF DestinationDirs セクションなど) を明示的に指定する場合は、その値を数値で表します。
次の例は、この構文を示しています。
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
INF ファイル エントリの構文でファイル パスを指定する場合は、システム指定の文字列置換を使用して、このパスの一部またはすべてを表すことができます。 この置換の形式は次のとおりです。
%dirid%
このフォームは、パーセント (%) 文字の後に指定するディレクトリの dirid が続き、その後に別のパーセント (%) 文字が続きます。 終了円記号 () 文字は、この式を次のファイル名またはパス内の追加のディレクトリから分離します。
次の例は、この構文を示しています。
[aic78xx_Service_Inst] ServiceBinary = %12%\aic78xx.sys
完全に展開されると、前の例で示したパスは c:\windows\system32\drivers\aic78xx.sys になります (Windows が c:\windows ディレクトリにインストールされていると仮定)。 INF ファイルの INF 文字列セクションを除き、文字列の置換 (%dirid% 形式) は、文字列が必要な任意の場所で使用できることに注意してください。
次の 2 つの例は、文字列の置換を使用しない 方法を示しています。
[DestinationDirs] DefaultDestDir = %11% ; Error! - number expected [aic78xx_Service_Inst] ServiceBinary = 12\aic78xx.sys ; Error! - unknown directory name
最初の例では、DefaultDestDir エントリの構文では、その値を数値にする必要があります。 ただし、%11% 式は文字列に展開されます。 2 番目の例では、INF ライターは、ServiceBinary エントリの値を、ドライバーを含むディレクトリ内のファイルに設定することを意図しています (詳細については、次の表を参照してください)。 このエラーは、Windows が "12" という名前のディレクトリ内で指定されたファイルを検索するため発生します。これは、コンピューターに存在しない可能性があります。
次の表は、一般的に使用される いくつかの dirids と、それらが表すディレクトリを示しています。 デバイス INF ファイルとドライバー INF ファイルで最も一般的に指定される値は、テーブルの上部に表示されます。
ドライバー パッケージの分離要件の一部として、ドライバーはドライバー ストアから実行する必要があり、DIRID 13 を使用してインストール時のドライバー パッケージ ファイルの場所を指定します。 Windows 11 バージョン 24H2 以降では、WHQL 署名の INF を送信するときに一般的に使用される dirids の一部が非推奨になりました。 詳細については、InfVerif /hを参照してください。
Value | 宛先ディレクトリ | 非推奨リリース |
---|---|---|
01 |
SourceDrive:\pathname (INF ファイルがインストールされたディレクトリ) |
Windows 11 24H2 |
"10" |
Windows ディレクトリ。 これは %SystemRoot% と同じです。 |
|
11 |
システム ディレクトリ。 これは、Windows 2000 以降のバージョンの Windows の %SystemRoot%\system32 と同じです。 |
|
12 |
Drivers ディレクトリ。 これは、Windows 2000 以降のバージョンの Windows の %SystemRoot%\system32\drivers と同じです。 |
|
13 |
ドライバー パッケージの Driver Store ディレクトリ。 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 |
Fonts ディレクトリ |
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 値を示します。
Value | シェル特殊フォルダ | 非推奨リリース |
---|---|---|
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 値を定義するには、CSIDL_Xxx 値に 16384 (0x4000) を追加します。 CSIDL_Xxx 値の詳細については、[Microsoft Windows SDK] ドキュメントを参照してください。