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 verwenden, aber die vom System definierten Verzeichnisse, die dirids zugeordnet sind, die von -1 bis 32767 stammen, nicht neu zuweisen.

Verwenden Sie zum Erstellen von Dirids mit benutzerdefinierten Werten von 32768 bis 65534 oder 65536 und höher die SetupSetDirectoryId-Funktion (in der Microsoft Windows SDK-Dokumentation beschrieben).

Beachten Sie, dass eine Dirid mit einem Wert von 65535 als Synonym für eine 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 (z. B. der ABSCHNITT INF DestinationDirs) angibt, wird dieser Wert als Zahl ausgedrückt.

    Das folgende Beispiel veranschaulicht diese Syntax:

    [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 anderen Prozentzeichen (%). Ein abschließender Backslash () trennt diesen Ausdruck von einem folgenden Dateinamen oder zusätzlichen Verzeichnissen im Pfad.

    Das folgende Beispiel veranschaulicht diese Syntax:

    [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, dass Windows im Verzeichnis c:\windows installiert wurde). Beachten Sie, dass die Zeichenfolgenersetzung oder die Form %dirid% an einer beliebigen Stelle verwendet werden kann, mit Ausnahme des Abschnitts „INF Strings“ der INF-Datei.

    Die beiden folgenden Beispiele zeigen, wie die Zeichenfolgenersetzung nicht verwendet werden soll.

    [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 sein Wert eine Zahl ist. Der %11% Ausdruck wird jedoch auf eine Zeichenfolge erweitert. Im zweiten Beispiel beabsichtigte der INF Writer offenbar, den Wert für den ServiceBinary-Eintrag auf eine Datei im Verzeichnis festzulegen, das Treiber enthält (weitere Informationen finden Sie in der folgenden Tabelle). Der Fehler tritt auf, da Windows die angegebene 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 werden oben in der Tabelle aufgelistet.

Im Rahmen der Anforderungen an die Treiberpaketisolation muss ein Treiber Run from Driver Store und 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 beim Übermitteln Ihrer INF für eine WHQL-Signatur veraltet. Weitere Informationen finden Sie unter InfVerif /h.

Wert Zielverzeichnis Version als veraltet markieren

01

SourceDrive:\pathname (das Verzeichnis, von dem aus 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 spätere Versionen von Windows..

12

Treiberverzeichnis.

Dies entspricht %SystemRoot%\system32\drivers für Windows 2000 und spätere Versionen von Windows.

13

Treiberpakets Driver Store-Verzeichnis.

Gibt für Windows 8.1 und neuere Windows-Versionen den Pfad zum Driver Store-Verzeichnis an, in das das Treiberpaket importiert wurde.

Verwenden Sie DelFiles nicht für eine Datei, für die in DestinationDirsdirid 13 angegeben ist.

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

Verwenden Sie CopyFiles nicht, um eine Datei umzubenennen, für die in DestinationDirsdirid 13 angegeben ist.

Weitere Informationen zur Verwendung von 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

Viewer-Verzeichnis

Windows 11 24H2

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" lautet, lautet dirid 24 "C:\".

Windows 11 24H2

25

Freigegebenes Verzeichnis

Windows 11 24H2

30

Stammverzeichnis des Startdatenträgers, auch bekannt als "ARC-Systempartition". (Dies kann dasselbe Verzeichnis sein oder auch nicht wie das Verzeichnis, 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 Printer 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 sich befinden

Windows 11 24H2

55

Druckerprozessorverzeichnis (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 sind dirid-Werte für diese Ordner aufgeführt.

Wert Shell-Spezialordner Release veraltet

16406

Alle Benutzer\Startmenü

Windows 11 24H2

16407

Alle Benutzer\Startmenü\Programme

Windows 11 24H2

16408

Alle Benutzer\Startmenü\Programme\Autostart

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

Program Files

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

Alle Benutzer\Vorlagen

Windows 11 24H2

16430

All Users\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 aufgeführt ist, fügen Sie dem wert CSIDL_Xxx 16384 (0x4000) hinzu. Weitere Informationen zu CSIDL_Xxx-Werten finden Sie in der Windows SDK-Dokumentation.