Použití Diridů

Mnoho adresářů, které se zobrazují v souborech INF, se dá vyjádřit pomocí identifikátorů adresáře (dirids), což jsou čísla, která identifikují konkrétní adresáře. Aplikace mohou použít, ale nemůžou znovu přiřadit systémem definované adresáře, které jsou přidruženy k dirids, jejichž hodnoty jsou v rozsahu od -1 do 32767.

K vytvoření dirids s uživatelsky definovanými hodnotami od 32768 do 65534 nebo 65536 a vyšší použijte funkci SetupSetDirectoryId (popsanou v dokumentaci k sadě Microsoft Windows SDK).

Mějte na paměti, že dirid s hodnotou 65535 se považuje za synonymum dirid s hodnotou -1, i když je upřednostňovaná druhá hodnota (dirid -1).

Pokud máte v souboru INF v úmyslu používat dirids, zvažte následující dva pokyny:

  1. Pokud syntaxe pro položku souboru INF explicitně určuje hodnotu dirid (například oddíl INF DestinationDirs), vyjádřete tuto hodnotu jako číslo.

    Následující příklad ukazuje tuto syntaxi:

    [DestinationDirs]
    DefaultDestDir = 11  ;  \system32 directory on Windows 2000 and later versions
    
  2. Pokud syntaxe položky souboru INF určuje cestu k souboru, můžete použít substituční řetězec dodaný systémem, který představuje část nebo celou tuto cestu. Tato náhrada má následující formu:

    % dirid%

    Tento formulář se skládá ze znaku procenta (%), za kterým následuje dirid pro adresář, který chcete zadat, a poté další znak procenta (%). Koncové zpětné lomítko () odděluje tento výraz od následujícího názvu souboru nebo dalších adresářů v cestě.

    Následující příklad ukazuje tuto syntaxi:

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

    Po úplném rozšíření má cesta zobrazená v předchozím příkladu tvar c:\windows\system32\drivers\aic78xx.sys (za předpokladu, že Windows byla nainstalována v adresáři c:\windows). Mějte na paměti, že nahrazení řetězce neboli tvar %dirid% lze použít kdekoli, kde je očekáván řetězec, s výjimkou sekce INF Strings souboru INF.

    Dva následující příklady ukazují, jak by se neměla použít náhrada řetězců.

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

    V prvním příkladu syntaxe položky DefaultDestDir vyžaduje, aby její hodnota byla číslem. Výraz %11% se ale rozšíří na řetězec. V druhém příkladu zapisovač INF zřejmě chtěl nastavit hodnotu položky ServiceBinary na soubor v adresáři, který obsahuje ovladače (další informace najdete v následující tabulce). K chybě dochází, protože Windows hledá zadaný soubor v adresáři s názvem "12", který pravděpodobně v počítači neexistuje.

Následující tabulka uvádí několik běžně používaných diridů a adresáře, které představují. Hodnoty, které jsou nejčastěji uváděny v souborech INF zařízení a ovladačů, jsou uvedeny v horní části tabulky.

V rámci požadavků na izolaci balíčku ovladačů musí být ovladač Run from Driver Store a použít DIRID 13 k určení umístění souborů balíčku ovladače při instalaci. Počínaje verzí 24H2 systému Windows 11 byly některé běžně používané dirids vyřazeny při odesílání INF pro podpis WHQL. Další informace naleznete v tématu InfVerif /h.

Value Cílový adresář Zastaralé vydání

01

SourceDrive:\pathname (adresář, ze kterého byl nainstalován soubor INF)

Windows 11 24H2

10

Windows adresář.

To odpovídá %SystemRoot%.

11

Systémový adresář.

To odpovídá %SystemRoot%\system32 ve Windows 2000 a novějších verzích systému Windows.

12

Adresář ovladačů.

To odpovídá umístění %SystemRoot%\\ pro Windows 2000 a novější verze systému Windows.

13

Adresář Driver Store balíčku ovladače.

Ve Windows 8.1 a novějších verzích systému Windows určuje cestu k adresáři úložiště ovladačů, do kterého byl balíček ovladače importován.

Nepoužívejte DelFiles pro soubor, pro který destinationDirs obsahuje dirid 13.

Volitelný podadresář v oddílu SourceDiskFiles pro soubor musí odpovídat podadresáři v oddílu DestinationDirs pro položku, která se vztahuje na tento soubor.

Nepoužívejte CopyFiles k přejmenování souboru, pro který DestinationDirs obsahuje dirid 13.

Další informace o použití dirid 13 naleznete v tématu Spuštění z úložiště ovladačů.

17

Adresář souborů INF

Windows 11 24H2

18

Adresář nápovědy

Windows 11 24H2

20

Složka písma

Windows 11 24H2

21

Adresář diváků

Windows 11 24H2

23

Složka barev (ICM) (nepoužívá se k instalaci ovladačů tiskárny)

24

Kořenový adresář systémového disku.

Toto je kořenový adresář disku, na kterém jsou nainstalovány soubory Windows. Pokud je například dirid 10 "C:\winnt", pak dirid 24 je "C:\".

Windows 11 24H2

25

Sdílený adresář

Windows 11 24H2

30

Kořenový adresář spouštěcího disku, označovaný také jako "systémový oddíl ARC". (Může nebo nemusí být stejný adresář jako adresář reprezentovaný dirid 24.)

Windows 11 24H2

50

Systémový adresář

To odpovídá %SystemRoot%\\system.

Windows 11 24H2

51

Spoolovací adresář (není používán k instalaci ovladačů tiskárny − viz Dirids tiskárny)

52

Adresář ovladačů spooleru (nepoužívá se k instalaci ovladačů tiskárny)

53

Adresář profilů uživatelů

Windows 11 24H2

54

Adresář, kde se nachází Ntldr.exe a Osloader.exe

Windows 11 24H2

55

Adresář tiskových procesorů (není používán k instalaci ovladačů tiskárny)

-1

Absolutní cesta

Windows 11 24H2

Dirid hodnoty od 16384 do 32767 jsou vyhrazené pro speciální složky prostředí. V následující tabulce jsou uvedeny hodnoty dirid pro tyto složky.

Value Speciální složka Shell Vydání je označeno jako zastaralé

16406

Všichni uživatelé\Nabídka Start

Windows 11 24H2

16407

Všichni uživatelé\Nabídka Start\Programy

Windows 11 24H2

16408

Všichni uživatelé\Nabídka Start\Programy\Po spuštění

Windows 11 24H2

16409

Všichni uživatelé\Desktop

Windows 11 24H2

16415

Všichni uživatelé\Oblíbené

Windows 11 24H2

16419

All Users\Application Data

Windows 11 24H2

16422

Program Files

16425

%SystemRoot%\SysWOW64

16426

%ProgramFiles(x86)%

16427

Program Files\Common

16428

%ProgramFiles(x86)%\Common

16429

Všichni uživatelé\Šablony

Windows 11 24H2

16430

All Users\Dokumenty

Windows 11 24H2

Kromě hodnot v této tabulce, které jsou definovány v Setupapi.h, můžete použít libovolnou z CSIDL_Xxx hodnot, které jsou definovány v Shlobj.h. Pokud chcete definovat hodnotu dirid pro složku, která není uvedená v této tabulce, přidejte hodnotu 16384 (0x4000) k hodnotě CSIDL_Xxx. Další informace o hodnotách CSIDL_Xxx najdete v dokumentaci k sadě Windows SDK.