Dirids の使用

INF ファイルに表示されるディレクトリの多くは、特定のディレクトリを識別する番号であるディレクトリ識別子 (dirids) を使用して表現できます。 アプリケーションでは使用できますが、値が -1 から 32767 までの dirids に関連付けられているシステム定義のディレクトリを再割り当てすることはできません。

32768 ~ 65534、または 65536 以降のユーザー定義値を使用してディリドを作成するには、SetupSetDirectoryId 関数を使用します (Microsoft Windows SDK ドキュメントで説明します)。

値が 65535 の ダイリド は-1 の ダイリド と同義と見なされますが、後者 (dirid -1) が好ましいことに注意してください。

INF ファイルで dirids を使用する場合は、次の 2 つのガイドラインを考慮してください。

  1. INF ファイル エントリの構文で dirid 値 (INF DestinationDirs セクションなど) を明示的に指定する場合は、その値は数値として表します。

    次の例は、この構文を示しています。

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. INF ファイル エントリの構文でファイル パスを指定する場合は、システム指定の文字列置換を使用して、このパスの一部またはすべてを表すことができます。 この置換の形式は次のとおりです。

    % dirid%

    この形式は、パーセント (%) 文字の後に指定するディレクトリの ディリド が続き、その後に別のパーセント (%) 文字が続きます。 終了円記号 () 文字は、この式を次のファイル名またはパス内の追加のディレクトリから分離します。

    次の例は、この構文を示しています。

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

    完全に展開すると、前の例で示したパスは c:\windows\system32\drivers\aic78xx.sys になります (Windowsが c:\windows ディレクトリにインストールされていると仮定します)。 INF ファイルの INF 文字列セクションを除き、文字列の置換 (%の% 形式) は、文字列が想定される任意の場所で使用できることに注意してください。

    次の 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" という名前のディレクトリ内の指定されたファイルを検索するためです。これは、コンピューターに存在しない可能性があります。

次の表は、一般的に使用される いくつかのディリドと、それらが表すディレクトリを示しています。 デバイス INF ファイルとドライバー INF ファイルで最も一般的に指定される値は、表の上部に一覧表示されています。

ドライバー パッケージ分離要件の一部として、ドライバーはドライバー ストアから実行し、DIRID 13 を使用して、インストール時のドライバー パッケージ ファイルの場所を指定する必要があります。 Windows 11 以降、バージョン 24H2 では、dirids の一部が、WHQL 署名用に INF を送信するときに非推奨になりました。 詳細については、「 InfVerif /h」を参照してください。

値 宛先ディレクトリ リリースは非推奨

01

SourceDrive:\pathname (INF ファイルのインストール元のディレクトリ)

Windows 11 24H2

10

Windows ディレクトリ。

これは %SystemRoot% と同等です。

11

システム ディレクトリ。

これは、Windows 2000 以降のバージョンの Windows の%SystemRoot%\system32 と同じです。

12

Drivers ディレクトリ。

これは、Windows 2000 以降のバージョンでは %SystemRoot%\system32\drivers と同じです。

13

ドライバー パッケージの Driver Store ディレクトリ。

Windows 8.1 以降では、ドライバー パッケージがインポートされたドライバー ストア ディレクトリへのパスを指定します。

DelFiles を、DestinationDirs に dirid 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" の場合、 dirid 24 は "C:\" になります。

Windows 11 24H2

25

共有ディレクトリ

Windows 11 24H2

30

ブート ディスクのルート ディレクトリ ("ARC システム パーティション" とも呼ばれます)。 (これは dirid 24 で表されるディレクトリと同じディレクトリである場合もあれば、そうでない場合もあります)。

Windows 11 24H2

50

システム ディレクトリ

これは、\system%SystemRoot%と同じです。

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値は、特殊なシェル フォルダー用に予約されています。 次の表に、これらのフォルダー のダイリド 値を示します。

値 シェルの特殊フォルダー リリースを非推奨にする

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

プログラム ファイル

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

すべてのユーザー\テンプレート

Windows 11 24H2

16430

All Users\Documents

Windows 11 24H2

Setupapi.h で定義されているこのテーブルの値に加えて、Shlobj.h で定義されている CSIDL_Xxx 値のいずれかを使用できます。 この表に記載されていないフォルダーの dirid 値を定義するには、CSIDL_Xxx 値に 16384 (0x4000) を追加します。 CSIDL_Xxx 値の詳細については、Windows SDK のドキュメントを参照してください。