Utilisation de BinPlace à partir de la ligne de commande
Important Les exemples de cette rubrique traitent de l’utilisation de la macro BINPLACE_PLACEFILE et du fichier placeBinPlace. Cette macro et ce fichier sont obsolètes dans la version Windows 7 du Kit de pilotes Windows et peuvent ne pas être pris en charge dans les versions ultérieures de WDK.
Cette rubrique fournit des exemples d’utilisation de BinPlace à partir de la ligne de commande.
Tout d’abord, vous pouvez définir le répertoire de destination racine comme suit :
set _NTTREE=d:\ProjectRoot
Vous pouvez ensuite définir le chemin d’accès et le nom du fichier de lieu de la manière suivante :
set BINPLACE_PLACEFILE=d:\mystuff\myplacefile.txt
Laissez le contenu du fichier d:\mystuff\myplacefile.txt être comme suit :
; This is a simple place file.
commonmodule.dll retail
application.exe files\bin
mydriver.sys *\drivertree
extra.cab appendix
Vous pouvez maintenant exécuter BinPlace avec la commande suivante :
binplace g:\somelocation\extra.cab
Étant donné que extra.cab n’est pas un fichier exécutable, BinPlace le déplace uniquement. Le répertoire de destination racine est d:\projectroot. Le répertoire de classe de ce fichier est spécifié dans le fichier de place en annexe. Le sous-répertoire de type fichier est cab (l’extension de nom de fichier du fichier déplacé). Par conséquent, ce fichier est copié à l’emplacement d:\projectroot\appendix\cab\extra.cab.
Utilisez maintenant BinPlace sur le fichier exécutable et son fichier de symboles. Pour ce faire, vous spécifiez le nom du fichier exécutable . BinPlace trouvera le fichier de symboles associé.
Lorsque vous transmettez un nom de fichier exécutable à BinPlace, il recherche ses fichiers de symboles dans le même répertoire que le fichier exécutable. S’il ne les trouve pas ici, il lit l’enregistrement CodeView stocké dans le fichier exécutable ; s’il trouve un chemin d’accès au fichier de symboles dans cet enregistrement, il recherche les fichiers de symboles dans ce chemin.
Note Si vous spécifiez explicitement un nom de fichier de symboles, BinPlace se contentera de le déplacer, et non de le traiter.
binplace -a -x -s d:\stripped -n g:\full g:\builddir\application.exe
Le fichier exécutable utilise le même répertoire de destination racine qu’auparavant. Son répertoire de classe est files\bin. Ainsi, il est placé dans d:\projectroot\files\bin\application.exe.
Le fichier de symboles est placé à deux emplacements. Le fichier de symboles complet (y compris les symboles privés et publics) est dirigé vers g:\full\files\bin\exe\application.pdb. Le fichier de symboles supprimés (contenant uniquement des symboles publics) passe à d:\stripped\files\bin\exe\application.pdb.
Maintenant, utilisez une commande similaire sur commonmodule.dll :
binplace -a -x -s d:\stripped -n g:\full g:\builddir\commonmodule.dll
Cette fois, le sous-répertoire de classe est retail. Pour le fichier exécutable, ce nom de répertoire est un code pour « ne pas utiliser de sous-répertoire de classe », il est donc placé dans d:\projectroot\application.exe. Les fichiers de symboles sont placés dans g:\full\retail\dll\application.pdb et d:\stripped\retail\dll\application.pdb.
Enfin, utilisez BinPlace sur mydriver.sys et omettez le commutateur -n :
binplace -a -x -s d:\stripped g:\builddir\mydriver.sys
Ici, le sous-répertoire de classe est */drivertree. Pour le fichier exécutable, l’astérisque (*) est remplacé par le type de processeur. En supposant que vous exécutez sur un ordinateur x86, le fichier exécutable est placé dans d:\projectroot\i386\drivertree\application.exe. Le fichier de symboles supprimé est placé dans g:\full\drivertree\sys\application.pdb, car l’astérisque est ignoré pour un fichier de symboles. Étant donné que le commutateur -n a été omis, le fichier de symboles complet n’est placé nulle part.