Répertoires de destination BinPlace
BinPlace crée une arborescence de répertoires pour contenir les fichiers qu’il place. La structure de cette arborescence est déterminée par les paramètres qui sont passés à la ligne de commande de BinPlace, les valeurs de certaines variables d’environnement et le contenu d’un fichier texte appelé fichier de lieu.
BinPlace place les fichiers si l’une des deux conditions est remplie :
Le fichier est spécifié sur la ligne de commande BinPlace.
Le fichier est un fichier de symboles résidant dans le même répertoire que son fichier exécutable associé, et le fichier exécutable est spécifié sur la ligne de commande. Dans ce cas, le fichier de symboles et le fichier exécutable seront placés dans différents répertoires. BinPlace peut également effectuer le fractionnement ou le déshabillage (voir Symboles publics et symboles privés) ou le découpage (voir Systèmes de fichiers de symboles) dans ce scénario.
Lorsque BinPlace place des fichiers, il remplace automatiquement un fichier plus ancien portant le même nom. Toutefois, BinPlace ne remplace pas par défaut un fichier plus récent. En particulier, si une version plus récente (ou identique) d’un fichier exécutable est présente, ni le fichier exécutable ni les fichiers de symboles associés ne seront écrits sur le disque. Si vous souhaitez que BinPlace remplace les fichiers quel que soit leur horodatage, utilisez l’option de ligne de commande -f .
Destinations de fichiers
Le nom du répertoire dans lequel BinPlace place un fichier spécifié sur sa ligne de commande est créé en concaténant deux répertoires : le répertoire de destination racine et le sous-répertoire de classe. (Les répertoires peuvent avoir n’importe quel nom de votre choix, mais le répertoire de destination racine est généralement la racine de l’arborescence de répertoires où vous placez vos fichiers, et le sous-répertoire de classe est un sous-répertoire où il semble logique de placer un fichier ou un groupe de fichiers spécifique.)
Le répertoire de destination racine peut être spécifié à l’aide du paramètre de ligne de commande -r RootDestinationPath. Si cette valeur est omise, la valeur par défaut est déterminée par la variable d’environnement _NT386TREE, _NTIA64TREE ou _NTAMD64TREE sur un ordinateur x86, Itanium ou x64, respectivement. Le répertoire de destination racine doit être défini de l’une de ces manières ; s’il n’est pas défini du tout, BinPlace ne s’exécute pas.
Le sous-répertoire de classe est généralement spécifié dans le fichier de place. Il est possible de spécifier plusieurs sous-répertoires de classe pour un fichier ; Cela oblige BinPlace à effectuer des copies du fichier et à les placer dans chacun des emplacements spécifiés. Pour plus d’informations, consultez Syntaxe de fichier de place. Le sous-répertoire de classe peut également être spécifié à l’aide du paramètre de ligne de commande -:D EST ClassPath.
Destinations du fichier de symboles
Lorsqu’un fichier exécutable est répertorié sur la ligne de commande de BinPlace et qu’un fichier de symboles est associé dans le même répertoire, BinPlace copie également (ou modifie) le fichier de symboles. Le répertoire dans lequel ce fichier de symboles est placé est créé en concaténant trois répertoires : le répertoire racine des symboles, le sous-répertoire de classe et le sous-répertoire de type fichier.
Le répertoire racine des symboles peut être spécifié à l’aide du paramètre de ligne de commande SymbolRoot -s. Si vous utilisez les commutateurs -a et -x , les fichiers de symboles supprimés sont placés sous le répertoire SymbolRoot . Dans ce cas, vous pouvez utiliser -n FullSymbolRoot pour spécifier l’emplacement des fichiers de symboles complets.
Le sous-répertoire de classe est généralement spécifié dans le fichier de place. Il est possible de spécifier plusieurs sous-répertoires de classe pour un fichier ; Cela oblige BinPlace à effectuer des copies du fichier et à les placer dans chacun des emplacements spécifiés. Pour plus d’informations, consultez Syntaxe de fichier de place. Le sous-répertoire de classe peut également être spécifié à l’aide du paramètre de ligne de commande -:D EST ClassPath. Et si le commutateur de ligne de commande -y est utilisé, aucun sous-répertoire de classe n’est utilisé pour les fichiers de symboles. Le répertoire de destination se compose simplement du répertoire racine du symbole et du sous-répertoire de type fichier.
Le sous-répertoire de type fichier est utilisé uniquement pour les fichiers de symboles. Il est déterminé par l’extension de nom de fichier du fichier exécutable d’origine. Ainsi, les fichiers de symboles associés à .exe fichiers sont placés dans un sous-répertoire exe, les fichiers de symboles associés aux DLL sont placés dans un sous-répertoire dll et les fichiers de symboles associés aux pilotes sont placés dans un sous-répertoire sys. Cette convention permet d’éviter les conflits de noms de fichiers : par exemple, myprogram.exe et myprogram.dll peuvent tous deux avoir des fichiers de symboles nommés myprogram.pdb, mais ces fichiers de symboles seront placés dans des sous-répertoires différents.
Il existe une exception à cet algorithme. Si ni -s ni -n n’est fourni, les fichiers de symboles complets sont placés au même emplacement que les fichiers binaires.
Note Si vous répertoriez le nom du fichier de symboles dans la ligne de commande de BinPlace, BinPlace le déplace comme n’importe quel autre fichier et n’examine pas son contenu. Pour utiliser les techniques de manipulation de fichier de symboles de BinPlace, vous devez répertorier le nom du fichier exécutable, et non le nom du fichier de symboles.