Verwenden von Dirids

Viele der Verzeichnisse, die in INF-Dateien angezeigt werden, können mithilfe von Verzeichnisbezeichnern (Dirids) ausgedrückt werden, bei denen es sich um Zahlen handelt, die bestimmte Verzeichnisse identifizieren. Anwendungen können die systemdefinierten Verzeichnisse, die Dirids zugeordnet sind, deren Werte von -1 bis 32767 liegen, verwenden, aber nicht neu zuweisen.

Um Dirids mit benutzerdefinierten Werten von 32768 bis 65534 oder 65536 und höher zu erstellen, verwenden Sie die Funktion SetupSetDirectoryId (in der Microsoft Windows SDK Dokumentation beschrieben).

Beachten Sie, dass ein Dirid mit dem Wert 65535 als synonym mit einer Dirid mit dem Wert -1 betrachtet wird, obwohl letzteres (dirid -1) bevorzugt wird.

Wenn Sie dirids in Ihrer INF-Datei verwenden möchten, beachten Sie die folgenden beiden Richtlinien:

  1. Wenn die Syntax für einen INF-Dateieintrag explizit einen Dirid-Wert angibt (z. B. der ABSCHNITT INF DestinationDirs), geben Sie diesen Wert als Zahl an.

    Im folgenden Beispiel wird diese Syntax veranschaulicht:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. Wenn die Syntax für einen INF-Dateieintrag einen Dateipfad angibt, können Sie eine vom System bereitgestellte Zeichenfolgenersetzung verwenden, um einen Teil oder den gesamten Pfad darzustellen. Diese Ersetzung hat die folgende Form:

    %dirid%

    Dieses Formular besteht aus einem Prozentzeichen (%) gefolgt von der Dirid für das Verzeichnis, das Sie angeben möchten, gefolgt von einem weiteren Prozentzeichen (%) Ein abschließendes umgekehrtes Schrägstrichzeichen () trennt diesen Ausdruck von einem folgenden Dateinamen oder zusätzlichen Verzeichnissen im Pfad.

    Im folgenden Beispiel wird diese Syntax veranschaulicht:

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

    Bei vollständiger Erweiterung wird der im vorherigen Beispiel gezeigte Pfad zu c:\windows\system32-Treibern\\aic78xx.sys (vorausgesetzt, windows wurde im Verzeichnis c:\windows installiert). Beachten Sie, dass die Zeichenfolgenersetzung oder das Formular %dirid% überall dort verwendet werden kann, wo eine Zeichenfolge erwartet wird, mit Ausnahme des Abschnitts INF-Zeichenfolgen der INF-Datei.

    Die beiden folgenden Beispiele zeigen, dass die Zeichenfolgenersetzung nicht verwendet werden sollte.

    [DestinationDirs]
    DefaultDestDir = %11%  ; Error! - number expected
    
    [aic78xx_Service_Inst]
    ServiceBinary = 12\aic78xx.sys  ; Error! - unknown directory name
    

    Im ersten Beispiel erfordert die Syntax für den DefaultDestDir-Eintrag , dass dessen Wert eine Zahl sein muss. Der Ausdruck %11% wird jedoch zu einer Zeichenfolge erweitert. Im zweiten Beispiel beabsichtigte der INF-Writer offenbar, den Wert für den ServiceBinary-Eintrag auf eine Datei im Verzeichnis festzulegen, die Treiber enthält (weitere Informationen finden Sie in der folgenden Tabelle). Der Fehler tritt auf, weil Windows nach der angegebenen Datei in einem Verzeichnis namens "12" sucht, das auf dem Computer wahrscheinlich nicht vorhanden ist.

Die folgende Tabelle enthält mehrere häufig verwendete Dirids und die Verzeichnisse, die sie darstellen. Die werte, die am häufigsten von Geräte-INF-Dateien und Treiber-INF-Dateien angegeben werden, werden oben in der Tabelle aufgeführt.

Wert Zielverzeichnis

01

SourceDrive:\pathname (das Verzeichnis, aus dem die INF-Datei installiert wurde)

10

Windows-Verzeichnis.

Dies entspricht %SystemRoot%.

11

Systemverzeichnis.

Dies entspricht %SystemRoot%\system32 für Windows 2000 und höhere Versionen von Windows.

12

Treiberverzeichnis.

Dies entspricht %SystemRoot%\system32-Treibern\ für Windows 2000 und höhere Versionen von Windows.

13

Treiberspeicherverzeichnis des Treiberpakets.

Gibt für Windows 8.1 und höhere Versionen von Windows den Pfad zu dem Treiberspeicherverzeichnis an, in das das Treiberpaket importiert wurde.

Verwenden Sie DelFiles nicht für eine Datei, für die DestinationDirsdirid 13 enthält.

Das optionale Unterverzeichnis im Abschnitt SourceDiskFiles für eine Datei muss mit dem Unterverzeichnis im Abschnitt DestinationDirs für den Eintrag übereinstimmen, der für diese Datei gilt.

Verwenden Sie CopyFiles nicht, um eine Datei umzubenennen, für die DestinationDirsdirid 13 enthält.

Weitere Informationen zur Verwendung von dirid 13 finden Sie unter Ausführen aus dem Treiberspeicher.

17

INF-Dateiverzeichnis

18

Hilfeverzeichnis

20

Verzeichnis "Schriftarten"

21

Verzeichnis "Viewers"

23

Farbverzeichnis (ICM) (wird nicht für die Installation von Druckertreibern verwendet)

24

Stammverzeichnis des Systemdatenträgers.

Dies ist das Stammverzeichnis des Datenträgers, auf dem Windows-Dateien installiert sind. Wenn dirid 10 beispielsweise "C:\winnt" ist, ist dirid 24 "C:\".

25

Freigegebenes Verzeichnis

30

Stammverzeichnis des Startdatenträgers, auch bekannt als "ARC-Systempartition". (Dies kann dasselbe Verzeichnis wie das durch dirid 24 dargestellte Verzeichnis sein.)

50

Systemverzeichnis

Dies entspricht %SystemRoot%\system.

51

Spoolverzeichnis (nicht für die Installation von Druckertreibern verwendet – siehe Druckerdirids)

52

Spooltreiberverzeichnis (nicht für die Installation von Druckertreibern verwendet)

53

Benutzerprofilverzeichnis

54

Verzeichnis, in dem sichNtldr.exe und Osloader.exe befinden

55

Verzeichnis der Druckprozessoren (nicht für die Installation von Druckertreibern verwendet)

-1

Absoluter Pfad

Dirid-Werte von 16384 bis 32767 sind für spezielle Shellordner reserviert. In der folgenden Tabelle sind dirid-Werte für diese Ordner aufgeführt.

Wert Shell-Spezialordner

16406

Alle Benutzer\Startmenü

16407

Alle Benutzer\Startmenü\Programme

16408

Alle Benutzer\Startmenü\Programme\Start

16409

Alle Benutzer\Desktop

16415

Alle Benutzer\Favoriten

16419

Alle Benutzer\Anwendungsdaten

16422

Programmdateien

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Programme\Common

16428

%ProgramFiles(x86)%\Common

16429

Alle Benutzer\Vorlagen

16430

Alle Benutzer\Dokumente

Zusätzlich zu den Werten in dieser Tabelle, die in Setupapi.h definiert sind, können Sie jeden der CSIDL_Xxx-Werte verwenden, die in Shlobj.h definiert sind. Um einen Dirid-Wert für einen Ordner zu definieren, der nicht in dieser Tabelle aufgeführt ist, fügen Sie dem CSIDL_Xxx-Wert 16384 (0x4000) hinzu. Weitere Informationen zu CSIDL_Xxx-Werten finden Sie in der Windows SDK-Dokumentation.