Använda Dirids

Många av de kataloger som visas i INF-filer kan uttryckas med hjälp av katalogidentifierare (dirids), som är tal som identifierar specifika kataloger. Program kan använda, men kan inte omtilldela de systemdefinierade kataloger som är associerade med dirids vars värden sträcker sig från -1 till 32767.

Om du vill skapa dirids med användardefinierade värden från 32768 till 65534, eller 65536 och uppåt, använder du funktionen SetupSetDirectoryId (beskrivs i Microsoft Windows SDK-dokumentationen).

Tänk på att ett dirid med värdet 65535 anses vara synonymt med ett dirid med värdet -1, även om det senare (dirid -1) föredras.

Om du tänker använda dirids i INF-filen bör du överväga följande två riktlinjer:

  1. När syntaxen för en INF-filpost uttryckligen anger ett dirid-värde (avsnittet INF DestinationDirs, till exempel) uttrycker du det värdet som ett tal.

    Följande exempel visar den här syntaxen:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. När syntaxen för en INF-filpost anger en filsökväg kan du använda en strängersättning som tillhandahålls av systemet för att representera en del av eller hela den här sökvägen. Den här ersättningen har följande form:

    % dirid%

    Det här formatet består av ett procenttecken (%) följt av dirid för den katalog som du vill ange, följt av ett annat procenttecken (%). Ett avslutande omvänt snedstreck () separerar det här uttrycket från ett följande filnamn eller ytterligare kataloger i sökvägen.

    Följande exempel demonstrerar den här syntaxen:

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

    När den är helt expanderad blir sökvägen som visas i föregående exempel c:\windows\system32\drivers\aic78xx.sys (förutsatt att Windows installerades i katalogen c:\windows). Tänk på att strängersättningen, eller formatet %dirid%, kan användas var som helst där en sträng förväntas, med undantag för avsnittet INF Strings i INF-filen.

    De två följande exemplen visar hur strängersättning inte ska användas.

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

    I det första exemplet kräver syntaxen för posten DefaultDestDir att dess värde är ett tal. Men uttrycket %11% expanderas till en sträng. I det andra exemplet avsåg INF-skribenten tydligen att ange värdet för ServiceBinary-posten till sökvägen till en fil i katalogen som innehåller drivrutiner (se följande tabell för mer information). Felet uppstår eftersom Windows söker efter den angivna filen i en katalog med namnet "12", som förmodligen inte finns på datorn.

I följande tabell visas flera vanliga dirids och de kataloger som de representerar. De värden som oftast anges av INF-filer för enheter och INF-filer för drivrutiner visas överst i tabellen.

Som en del av kraven för Driver Package Isolation måste en drivrutin Run from Driver Store och använda DIRID 13 för att ange platsen för drivrutinspaketfiler vid installation. Från och med Windows 11, version 24H2 har några av de vanliga dirids blivit inaktuella när du skickar in din INF för en WHQL-signatur. Mer information finns i InfVerif /h.

Value Målkatalog Versionen är föråldrad

01

SourceDrive:\pathname (katalogen som INF-filen installerades från)

Windows 11 24H2

10

Windows-mapp.

Detta motsvarar %SystemRoot%.

11

Systemkatalog.

Detta motsvarar %SystemRoot%\system32 för Windows 2000 och senare versioner av Windows..

12

Katalog över drivrutiner.

Detta motsvarar %SystemRoot%\system32\drivers för Windows 2000 och senare versioner av Windows.

13

Drivrutinspaketets katalog för Driver Store.

För Windows 8.1 och senare versioner av Windows anger sökvägen till katalogen Driver Store där drivrutinspaketet importerades.

Använd inte DelFiles för en fil där DestinationDirs innehåller dirid 13.

Den valfria underkatalogen i avsnittet SourceDiskFiles för en fil måste matcha underkatalogen i avsnittet DestinationDirs för posten som gäller för den här filen.

Använd inte CopyFiles för att byta namn på en fil vars DestinationDirs innehåller dirid 13.

Mer information om hur du använder dirid 13 finns, se i Kör från drivrutinsarkivet.

17

INF-katalog

Windows 11 24H2

18

Hjälpmapp

Windows 11 24H2

20

Teckensnittsmapp

Windows 11 24H2

21

Visarkatalog

Windows 11 24H2

23

Färgkatalog (ICM) (används inte för att installera skrivardrivrutiner)

24

Rotkatalogen för systemdisken.

Det här är rotkatalogen för disken där Windows filer har installerats. Om dirid 10 till exempel är "C:\winnt" är dirid 24 "C:\".

Windows 11 24H2

25

Delad mapp

Windows 11 24H2

30

Rotkatalogen för startdisken, även kallad "ARC-systempartition". (Det här kanske eller kanske inte är samma katalog som den som representeras av dirid 24.)

Windows 11 24H2

50

Systemkatalog

Detta motsvarar %SystemRoot%\system.

Windows 11 24H2

51

Spool-katalog (används inte för att installera skrivardrivrutiner – se Skrivar-dirider)

52

Katalog för Spool-drivrutiner (används inte för att installera skrivardrivrutiner)

53

Användarprofilkatalog

Windows 11 24H2

54

Katalog där Ntldr.exe och Osloader.exe finns

Windows 11 24H2

55

Katalog för utskriftsprocessorer (används inte för att installera skrivardrivrutiner)

-1

Absolut sökväg

Windows 11 24H2

Dirid-värden från 16384 till 32767 är reserverade för särskilda shell-mappar. I följande tabell visas dirid-värden för dessa mappar.

Value Shell-specialmapp Versionen är föråldrad

16406

Alla användare\Start-meny

Windows 11 24H2

16407

Alla användare\Start-menyn\Program

Windows 11 24H2

16408

Alla användare\Start-menyn\Program\Autostart

Windows 11 24H2

16409

All Users\Desktop

Windows 11 24H2

16415

Alla användare\Favoriter

Windows 11 24H2

16419

Alla användare\Application Data

Windows 11 24H2

16422

Programfiler

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

Alla användare\Mallar

Windows 11 24H2

16430

All Users\Documents

Windows 11 24H2

Förutom värdena i den här tabellen som definieras i Setupapi.h kan du använda något av de CSIDL_Xxx-värden som definieras i Shlobj.h. Om du vill definiera ett dirid-värde för en mapp som inte visas i den här tabellen lägger du till 16384 (0x4000) till värdet CSIDL_Xxx. Mer information om CSIDL_Xxx-värden finns i dokumentationen för Windows SDK.