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:
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
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für