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.