Utilisation de Dirids
La plupart des répertoires qui apparaissent dans les fichiers INF peuvent être exprimés à l’aide d’identificateurs de répertoire (dirids), qui sont des nombres qui identifient des répertoires spécifiques. Les applications peuvent utiliser, mais ne peuvent pas réaffecter les répertoires définis par le système associés à des dirids dont les valeurs sont comprises entre -1 et 32767.
Pour créer des dirids avec des valeurs définies par l’utilisateur de 32768 à 65534 ou 65536 et ultérieures, utilisez la fonction SetupSetDirectoryId (décrite dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows).
Sachez qu’un dirid avec une valeur de 65535 est considéré comme synonyme d’un dirid avec une valeur de -1, bien que ce dernier (dirid -1) soit préféré.
Si vous envisagez d’utiliser des dirids dans votre fichier INF, tenez compte des deux instructions suivantes :
Lorsque la syntaxe d’une entrée de fichier INF spécifie explicitement une valeur dirid (section INF DestinationDirs, par exemple), exprimez cette valeur en tant que nombre.
L’exemple suivant illustre cette syntaxe :
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
Lorsque la syntaxe d’une entrée de fichier INF spécifie un chemin d’accès de fichier, vous pouvez utiliser une substitution de chaîne fournie par le système pour représenter une partie ou tout ce chemin d’accès. Cette substitution a la forme suivante :
%dirid%
Ce formulaire se compose d’un caractère de pourcentage (%), suivi du dirid pour le répertoire que vous souhaitez spécifier, suivi d’un autre caractère de pourcentage (%). Un caractère de barre oblique inverse (\) de fin sépare cette expression d’un nom de fichier ou des répertoires supplémentaires suivants dans le chemin d’accès.
L’exemple suivant illustre cette syntaxe :
[aic78xx_Service_Inst] ServiceBinary = %12%\aic78xx.sys
Lorsqu’il est entièrement développé, le chemin indiqué dans l’exemple précédent devient c:\windows\system32\drivers\aic78xx.sys (en supposant que Windows a été installé dans le répertoire c:\windows). N’oubliez pas que la substitution de chaîne, ou formulaire %dirid%, peut être utilisée n’importe où où une chaîne est attendue, à l’exception de la section de chaînes INF du fichier INF.
Les deux exemples suivants montrent comment la substitution de chaîne ne doit pas être utilisée.
[DestinationDirs] DefaultDestDir = %11% ; Error! - number expected [aic78xx_Service_Inst] ServiceBinary = 12\aic78xx.sys ; Error! - unknown directory name
Dans le premier exemple, la syntaxe de l’entrée DefaultDestDir nécessite que sa valeur soit un nombre. Toutefois, l’expression %11% se développe sur une chaîne. Dans le deuxième exemple, l’enregistreur INF semble destiné à définir la valeur de l’entrée ServiceBinary sur un fichier du répertoire qui contient des pilotes (voir le tableau suivant pour plus d’informations). L’erreur se produit parce que Windows recherche le fichier spécifié dans un répertoire nommé « 12 », qui n’existe probablement pas sur l’ordinateur.
Le tableau suivant présente plusieurs dirids couramment utilisés et les répertoires qu’ils représentent. Les valeurs les plus couramment spécifiées par les fichiers INF d’appareils et les fichiers INF de pilotes sont répertoriées en haut du tableau.
Dans le cadre des exigences d'isolation de packages de pilotes, un pilote doit être exécuté à partir du magasin de pilotes et utiliser DIRID 13 pour spécifier l’emplacement des fichiers de package de pilotes lors de l’installation. À compter de Windows 11, version 24H2, certains des dirids couramment utilisés ont été déconseillés lors de l’envoi de votre INF pour une signature WHQL. Pour plus d'informations, voir InfVerif /h.
Valeur | Répertoire de destination | Version déconseillée |
---|---|---|
01 |
SourceDrive :\nomduchemin (répertoire à partir duquel le fichier INF a été installé) |
24H2 de Windows 11 |
10 |
Répertoire Windows. Cela équivaut à %SystemRoot%. |
|
11 |
Répertoire système. Cela équivaut à %SystemRoot%\system32 pour Windows 2000 et versions ultérieures de Windows. |
|
12 |
Répertoire des pilotes. Cela équivaut à %SystemRoot%\system32\drivers pour Windows 2000 et versions ultérieures de Windows. |
|
13 |
Répertoire du magasin de pilotes du package de pilotes. Pour Windows 8.1 et versions ultérieures de Windows, spécifie le chemin d’accès au répertoire du magasin de pilotes où le package de pilotes a été importé. N’utilisez pas DelFiles sur un fichier pour lequel DestinationDirs inclut dirid 13. Le sous-répertoire facultatif de la section SourceDiskFiles d’un fichier doit correspondre au sous-répertoire de la section DestinationDirs pour l’entrée qui s’applique à ce fichier. N’utilisez pas CopyFiles pour renommer un fichier pour lequel DestinationDirs inclut dirid 13. Pour plus d’informations sur l’utilisation de dirid 13, consultez Exécuter à partir du magasin de pilotes. |
|
17 |
Répertoire de fichier INF |
24H2 de Windows 11 |
18 |
Répertoire d’aide |
24H2 de Windows 11 |
20 |
Répertoire de polices |
24H2 de Windows 11 |
21 |
Répertoire des visionneuses |
24H2 de Windows 11 |
23 |
Répertoire de couleurs (ICM) (non utilisé pour l’installation des pilotes d’imprimante) |
|
24 |
Répertoire racine du disque système. Il s’agit du répertoire racine du disque sur lequel sont installés les fichiers Windows. Par exemple, si dirid 10 est « C:\winnt », alors dirid 24 est « C:\ ». |
24H2 de Windows 11 |
25 |
Répertoire partagé |
24H2 de Windows 11 |
30 |
Répertoire racine du disque de démarrage, également appelé « partition système ARC ». (Il peut ou non s’agir du même répertoire que celui représenté par dirid 24.) |
24H2 de Windows 11 |
50 |
Répertoire système Cela équivaut à %SystemRoot%\system. |
24H2 de Windows 11 |
51 |
Répertoire Spool (non utilisé pour l’installation des pilotes d’imprimante − voir Dirids d'imprimante) |
|
52 |
Répertoire des pilotes Spool (non utilisé pour l’installation des pilotes d’imprimante) |
|
53 |
Répertoire du profil de l'utilisateur. |
24H2 de Windows 11 |
54 |
Répertoire où se trouvent Ntldr.exe et Osloader.exe |
24H2 de Windows 11 |
55 |
Répertoire des processeurs d’impression (non utilisé pour l’installation des pilotes d’imprimante) |
|
-1 |
Chemin absolu |
24H2 de Windows 11 |
Les valeurs Dirid comprises entre 16384 et 32767 sont réservées aux dossiers d’interpréteurs de commandes spéciaux. Le tableau suivant présente les valeurs dirid pour ces dossiers.
Valeur | Dossier spécial Shell | Version déconseillée |
---|---|---|
16406 |
Tous les utilisateurs\Menu Démarrer |
24H2 de Windows 11 |
16407 |
Tous les utilisateurs\Menu Démarrer\Programmes |
24H2 de Windows 11 |
16408 |
Tous les utilisateurs\Menu Démarrer\Programmes\Démarrage |
24H2 de Windows 11 |
16409 |
Tous les utilisateurs\Bureau |
24H2 de Windows 11 |
16415 |
Tous les utilisateurs\Favoris |
24H2 de Windows 11 |
16419 |
Tous les utilisateurs\Données d’application |
24H2 de Windows 11 |
16422 |
Program Files |
|
16425 |
%SystemRoot%\SysWOW64 |
|
16426 |
%ProgramFiles(x86)% |
|
16427 |
Program Files\Common |
|
16428 |
%ProgramFiles(x86)%\Common |
|
16429 |
Tous les utilisateurs\Modèles |
24H2 de Windows 11 |
16430 |
Tous les utilisateurs\Documents |
24H2 de Windows 11 |
Outre les valeurs de cette table définies dans Setupapi.h, vous pouvez utiliser l’une des valeurs CSIDL_Xxx définies dans Shlobj.h. Pour définir une valeur dirid pour un dossier non répertorié dans cette table, ajoutez 16384 (0x4000) à la valeur CSIDL_Xxx. Pour plus d'informations sur les valeurs CSIDL_Xxx, consultez la documentation SDK Windows.