Verwenden von Dirids

Viele Verzeichnisse, die in INF-Dateien angezeigt werden, können mithilfe von Verzeichnisbezeichnern (dirids) ausgedrückt werden. Dies sind Zahlen, die bestimmte Verzeichnisse identifizieren. Anwendungen können vom System definierte Verzeichnisse verwenden (aber nicht neu zuweisen), die mit dirids mit Werten zwischen -1 bis 32767 verbunden sind.

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 eine dirid mit dem Wert 65535 als synonym mit der dirid mit dem Wert -1 betrachtet wird, auch wenn der letztere Wert (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. im Abschnitt INF DestinationDirs), muss dieser Wert als Zahl ausgedrückt werden.

    Im folgenden Beispiel wird diese Syntax gezeigt:

    [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 das folgende Format:

    %dirid%

    Dieses Format besteht aus einem Prozentzeichen (%), gefolgt von der dirid für das Verzeichnis, das Sie angeben möchten, gefolgt von einem weiteren Prozentzeichen (%). Ein umgekehrter Schrägstrich () am Ende trennt diesen Ausdruck von einem folgenden Dateinamen oder von zusätzlichen Verzeichnissen im Pfad.

    Im folgenden Beispiel wird diese Syntax gezeigt:

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

    Bei vollständiger Erweiterung ist der im vorherigen Beispiel gezeigte Pfad c:\windows\system32\drivers\aic78xx.sys (wenn Windows im Verzeichnis c:\windows installiert wurde). Beachten Sie, dass die Zeichenfolgenersetzung bzw. das Format %dirid%, überall verwendet werden kann, wo eine Zeichenfolge erwartet wird, ausgenommen im Abschnitt INF Strings der INF-Datei.

    Die beiden folgenden Beispiele zeigen, wie 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 Eintrag DefaultDestDir eine Zahl als Wert. Der Ausdruck %11% wird jedoch zu einer Zeichenfolge erweitert. Im zweiten Beispiel beabsichtigte der INF-Schreibvorgang offenbar, den Wert für den Eintrag ServiceBinary auf eine Datei in dem Verzeichnis festzulegen, das Treiber enthält (siehe folgende Tabelle für weitere Informationen). Der Fehler tritt auf, da Windows nach der angegebenen Datei in einem Verzeichnis namens „12“ sucht, das wahrscheinlich nicht auf dem Computer vorhanden ist.

Die folgende Tabelle enthält mehrere häufig verwendete dirids und die Verzeichnisse, die sie darstellen. Die am häufigsten durch Geräte-INF-Dateien und Treiber-INF-Dateien angegebenen Werte sind am oberen Ende der Tabelle aufgelistet.

Im Rahmen der Anforderungen an die Treiberpaketisolation müssen Treiber aus dem Treiberspeicher ausgeführt werden und die DIRID 13 verwenden, um den Speicherort für Treiberpaketdateien bei der Installation anzugeben. Ab Windows 11, Version 24H2, sind einige der häufig verwendeten dirids veraltet, wenn Sie Ihre INF für eine WHQL-Signatur übermitteln. Weitere Informationen finden Sie unter InfVerif /h.

Wert Zielverzeichnis Version veraltet

01

SourceDrive:\pathname (das Verzeichnis, über das die INF-Datei installiert wurde)

Windows 11 24H2

10

Windows-Verzeichnis.

Dies entspricht %SystemRoot%.

11

Systemverzeichnis.

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

12

Treiberverzeichnis.

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

13

Treiberspeicher-Verzeichnis des Treiberpakets.

Gibt für Windows 8.1 und höhere Windows-Versionen den Pfad zum Treiberspeicher-Verzeichnis an, in das das Treiberpaket importiert wurde.

Sie dürfen DelFiles nicht für eine Datei verwenden, für die DestinationDirs die dirid 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 DestinationDirs die dirid 13 enthält.

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

17

INF-Dateiverzeichnis

Windows 11 24H2

18

Hilfeverzeichnis

Windows 11 24H2

20

Schriftartenverzeichnis

Windows 11 24H2

21

Viewerverzeichnis

Windows 11 24H2

23

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

24

Stammverzeichnis des Systemdatenträgers.

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

Windows 11 24H2

25

Freigegebenes Verzeichnis

Windows 11 24H2

30

Stammverzeichnis des Startdatenträgers, auch als „ARC-Systempartition“ bekannt. (Dies kann oder kann nicht dasselbe Verzeichnis wie das Verzeichnis sein, das durch dirid 24 dargestellt wird.)

Windows 11 24H2

50

Systemverzeichnis

Dies entspricht %SystemRoot%\system.

Windows 11 24H2

51

Spoolverzeichnis (nicht für die Installation von Druckertreibern verwendet – siehe Drucker-Dirids)

52

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

53

Benutzerprofilverzeichnis

Windows 11 24H2

54

Verzeichnis, in dem Ntldr.exe und Osloader.exe gespeichert sind

Windows 11 24H2

55

Druckprozessorverzeichnis (nicht zum Installieren von Druckertreibern verwendet)

-1

Absoluter Pfad

Windows 11 24H2

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

Wert Spezieller Shellordner Version veraltet

16406

Alle Benutzer\Startmenu

Windows 11 24H2

16407

Alle Benutzer\Startmenü\Programme

Windows 11 24H2

16408

Alle Benutzer\Startmenü\Programme\Start

Windows 11 24H2

16409

Alle Benutzer\Desktop

Windows 11 24H2

16415

Alle Benutzer\Favoriten

Windows 11 24H2

16419

Alle Benutzer\Anwendungsdaten

Windows 11 24H2

16422

Programmdateien

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Programmdateien\Gemeinsame Dateien

16428

%ProgramFiles(x86)%\Common

16429

Alle Benutzer\Vorlagen

Windows 11 24H2

16430

Alle Benutzer\Dokumente

Windows 11 24H2

Zusätzlich zu den Werten in dieser Tabelle, die in Setupapi.h definiert sind, können Sie alle 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 aufgelistet ist, fügen Sie dem CSIDL_Xxx-Wert „16384 (0x4000)“ hinzu. Weitere Informationen zu CSIDL_Xxx-Werten finden Sie in der Windows SDK-Dokumentation.