Compartilhar via


Usando o BinPlace na linha de comando

Importante Os exemplos neste tópico discutem o uso da macro BINPLACE_PLACEFILE e o arquivo de localBinPlace. Essa macro e o arquivo estão obsoletos na versão do Windows 7 do Kit de Driver do Windows e podem não ter suporte em versões futuras do WDK.

Este tópico fornece exemplos de como usar o BinPlace na 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 e o nome do arquivo de local da seguinte maneira:

set BINPLACE_PLACEFILE=d:\mystuff\myplacefile.txt

Permita que 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 o BinPlace com o seguinte comando:

binplace g:\somelocation\extra.cab

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

Agora, use o BinPlace no arquivo executável e seu arquivo de símbolo. Para fazer isso, especifique 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 ele não encontrá-los lá, ele lê o registro CodeView armazenado no arquivo executável; se 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, o BinPlace simplesmente o moverá, não o processará.

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 de antes. Seu diretório de classe é files\bin. Assim, ele é colocado em d:\projectroot\files\bin\application.exe.

O arquivo de símbolo é colocado em dois locais. O arquivo de símbolo completo (incluindo símbolos públicos e privados) 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 no commonmodule.dll:

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

Desta vez, o subdiretório de classe é varejo. Para o arquivo executável, esse nome de diretório é um código para "não usar um subdiretório de classe", portanto, ele é 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.

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

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

Aqui, o subdiretório de classe é */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, pois 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.