Dirids の使用

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

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

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

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

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

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

    [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 ディレクトリにインストールされていると仮定)。 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 ファイルで最も一般的に指定される値は、テーブルの上部に表示されます。

Value 宛先ディレクトリ

01

SourceDrive:\pathname (INF ファイルがインストールされたディレクトリ)

"10"

Windows ディレクトリ。

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

11

システム ディレクトリ。

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

12

Drivers ディレクトリ。

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

13

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

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

DestinationDirsdirid 13 が含まれるファイルでは DelFiles を使用しないでください。

ファイルの SourceDiskFiles セクションのオプションのサブディレクトリは、このファイルに適用されるエントリの DestinationDirs セクションのサブディレクトリと一致する必要があります。

CopyFiles を使用して、DestinationDirsdirid 13 が含まれるファイルの名前を変更しないでください。

dirid 13 の使用方法の詳細については、「ドライバー ストアから実行する」を参照してください。

17

INF ファイル ディレクトリ

18

ヘルプ ディレクトリ

20

Fonts ディレクトリ

21

ビューワー ディレクトリ

23

カラー ディレクトリ (ICM) (プリンター ドライバーのインストールには使用されません )

24

システム ディスクのルート ディレクトリ。

これは、Windows ファイルがインストールされているディスクのルート ディレクトリです。 たとえば、dirid 10 が "C:\winnt" の場合、dirid 24 は "C:\" になります。

25

共有ディレクトリ

30

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

50

システム ディレクトリ

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

51

スプール ディレクトリ (プリンター ドライバーのインストールには使用されません - プリンターの Dirids を参照)

52

スプール ドライバー ディレクトリ (プリンター ドライバーのインストールには使用されません )

53

ユーザー プロファイル ディレクトリ

54

Ntldr.exeOsloader.exe が配置されているディレクトリ

55

印刷プロセッサ ディレクトリ (プリンター ドライバーのインストールには使用されません )

-1

絶対パス

16384 から 32767 までのDirid 値は、特殊なシェル フォルダー用に予約されています。 次の表に、これらのフォルダーの dirid 値を示します。

Value シェル特殊フォルダ

16406

[すべてのユーザー]\[スタート] メニュー

16407

すべてのユーザー\スタート メニュー\プログラム

16408

すべてのユーザー\スタート メニュー\プログラム\スタートアップ

16409

すべてのユーザー\デスクトップ

16415

すべてのユーザー\お気に入り

16419

すべてのユーザー\アプリケーション データ

16422

Program Files

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

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

16430

すべてのユーザー\ドキュメント

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