Поделиться через


Использование BinPlace из командной строки

Важно В примерах в этом разделе рассматривается использование макроса BINPLACE_PLACEFILE и файла размещенияBinPlace. Этот макрос и файл являются устаревшими в версии Windows 7 пакета драйверов Windows и могут не поддерживаться в будущих версиях WDK.

В этом разделе приведены примеры использования BinPlace из командной строки.

Сначала можно задать корневой целевой каталог следующим образом:

set _NTTREE=d:\ProjectRoot

Затем можно задать путь и имя файла места следующим образом:

set BINPLACE_PLACEFILE=d:\mystuff\myplacefile.txt

Содержимое файла d:\mystuff\myplacefile.txt следующим образом:

; This is a simple place file.
commonmodule.dll   retail
application.exe    files\bin
mydriver.sys       *\drivertree
extra.cab          appendix

Теперь вы можете запустить BinPlace с помощью следующей команды:

binplace g:\somelocation\extra.cab

Так как extra.cab не является исполняемым файлом, BinPlace будет только перемещать его. Корневой целевой каталог — d:\projectroot. Каталог класса для этого файла указывается в файле-месте в виде приложения. Подкаталог типа файла — cab (расширение имени перемещаемого файла). Таким образом, этот файл копируется в расположение d:\projectroot\appendix\cab\extra.cab.

Теперь используйте BinPlace в исполняемом файле и его файле символов. Для этого укажите имя исполняемого файла . BinPlace найдет связанный файл символов.

При передаче имени исполняемого файла в BinPlace он ищет его файлы символов в том же каталоге, что и исполняемый файл. Если он не находит их там, он считывает запись CodeView, хранящуюся в исполняемом файле; Если он находит путь к файлу символов в этой записи, он ищет файлы символов в этом пути.

Примечание Если явно указать имя файла символов, BinPlace просто переместит его, а не обработает.

binplace -a -x -s d:\stripped -n g:\full g:\builddir\application.exe

Исполняемый файл использует тот же корневой целевой каталог, что и раньше. Каталог класса — files\bin. Таким образом, он помещается в d:\projectroot\files\bin\application.exe.

Файл символов размещается в двух местах. Полный файл символов (включая как частные, так и общедоступные символы) переходит в папку g:\full\files\bin\exe\application.pdb. Файл с урезаными символами (содержащий только открытые символы) переходит в папку d:\stripped\files\bin\exe\application.pdb.

Теперь используйте аналогичную команду на commonmodule.dll:

binplace -a -x -s d:\stripped -n g:\full g:\builddir\commonmodule.dll

На этот раз подкаталог класса — retail. Для исполняемого файла это имя каталога является кодом для "не использовать подкаталог класса", поэтому он помещается в d:\projectroot\application.exe. Файлы символов размещаются в g:\full\retail\dll\application.pdb и d:\stripped\retail\dll\application.pdb.

Наконец, используйте BinPlace в mydriver.sys и опустите параметр -n :

binplace -a -x -s d:\stripped g:\builddir\mydriver.sys

Здесь подкаталог класса — */drivertree. Для исполняемого файла звездочка (*) заменяется типом процессора. Если вы работаете на компьютере x86, исполняемый файл помещается в d:\projectroot\i386\drivertree\application.exe. Урезаемый файл символов помещается в файл g:\full\drivertree\sys\application.pdb, так как звездочка не учитывается для файла символов. Так как параметр -n был опущен, полный файл символов не помещается нигде.