Partilhar via


Usando BinPlace a partir da linha de comando

Importante Os exemplos neste tópico discutem o uso da macro BINPLACE_PLACEFILE e o BinPlaceficheiro de localização. Esta macro e ficheiro estão obsoletos na versão Windows 7 do Windows Driver Kit e poderão não ser suportados em versões futuras do WDK.

Este tópico fornece exemplos de como usar BinPlace a partir da linha de comando.

Primeiro, você pode definir o diretório de destino raiz da seguinte maneira:

set _NTTREE=d:\ProjectRoot

Em seguida, você pode definir o caminho do arquivo de local e o nome do arquivo da seguinte maneira:

set BINPLACE_PLACEFILE=d:\mystuff\myplacefile.txt

Deixe o conteúdo do arquivo d:\mystuff\myplacefile.txt ser o seguinte:

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

Agora você pode executar BinPlace com o seguinte comando:

binplace g:\somelocation\extra.cab

Porque extra.cab não é um arquivo executável, BinPlace irá apenas movê-lo. O diretório de destino raiz é d:\projectroot. O diretório de classe para este arquivo é especificado no arquivo de lugar como apêndice. O subdiretório do tipo arquivo é cab (a extensão de nome de arquivo do arquivo que está sendo movido). Assim, este arquivo é copiado para o local d:\projectroot\appendix\cab\extra.cab.

Agora use o BinPlace no ficheiro executável e no ficheiro de símbolos. Para fazer isso, você especifica o nome do arquivo executável -- BinPlace encontrará o arquivo de símbolo associado.

Quando você passa um nome de arquivo executável para BinPlace, ele procura seus arquivos de símbolo no mesmo diretório que o arquivo executável. Se não encontrá-los lá, ele lê o registro CodeView armazenado no arquivo executável; Se ele encontrar um caminho de arquivo de símbolo nesse registro, ele procurará arquivos de símbolo nesse caminho.

Nota Se você especificar um nome de arquivo de símbolo explicitamente, BinPlace irá apenas movê-lo, não processá-lo.

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

O arquivo executável usa o mesmo diretório de destino raiz que antes. Seu diretório de classe é files\bin. Assim, coloca-se no d:\projectroot\files\bin\application.exe.

O arquivo de símbolos é colocado em dois locais. O arquivo de símbolo completo (incluindo símbolos privados e públicos) vai para g:\full\files\bin\exe\application.pdb. O arquivo de símbolo removido (contendo apenas símbolos públicos) vai para d:\stripped\files\bin\exe\application.pdb.

Agora, use um comando semelhante em commonmodule.dll:

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

Desta vez, o subdiretório de classe é de varejo. Para o arquivo executável, esse nome de diretório é um código para "não use um subdiretório de classe", por isso é colocado em d:\projectroot\application.exe. Os arquivos de símbolo são colocados em g:\full\retail\dll\application.pdb e d:\stripped\retail\dll\application.pdb.

Finalmente, use BinPlace no mydriver.sys e omita a opção -n.

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

Aqui o subdiretório class está */drivertree. Para o arquivo executável, o asterisco (*) é substituído pelo tipo de processador. Supondo que você esteja executando em um computador x86, o arquivo executável é colocado em d:\projectroot\i386\drivertree\application.exe. O arquivo de símbolo removido é colocado em g:\full\drivertree\sys\application.pdb, porque o asterisco é ignorado para um arquivo de símbolo. Como a opção -n foi omitida, o arquivo de símbolo completo não é colocado em nenhum lugar.