Pergunta

Alguém sabe maneiras de automatizar parcial ou totalmente a instalação do teste do driver?

Sou novo no desenvolvimento do motorista e estou acostumado a uma abordagem mais orientada a testes em idiomas de nível superior, portanto, mover-me para o tipo de ambiente em que não posso testar com facilidade, pois vou ter sido um passo em frente para mim. Estou usando o PC virtual para o meu ambiente de teste e atualmente tenho que redefini -lo, abrir o gerenciador de dispositivos, escolher o dispositivo, clicar em um monte de "Você tem certeza de que não prefere instalar um desses drivers de sistema"Digite diálogos e, finalmente, redefine o ambiente de teste enquanto reinicia o Windbg na máquina host, assim como o ambiente de teste está inicializando ... argh.

Depois de repetir esse processo muitas, muitas vezes, certamente tem que haver uma maneira melhor de fazer isso? Quais ferramentas/métodos/truques os desenvolvedores de motoristas comerciais usam para executar seu motorista em um ambiente de teste?

Observe que não se trata de drivers de teste de unidade, ainda não cheguei a esse estágio ou sei se é possível. Trata -se de iniciar um ambiente de teste com o Windbg anexado para garantir que algumas pequenas mudanças que eu possa ter feito é fazer o que espero.

Foi útil?

Solução

Parece -me que um software de virtualização + A "objetos simulados"A abordagem (em camadas) (conforme sugerida por Aaron Digulla) + scripts (como sugerido por Sergius) pode simplificar o desenvolvimento do driver do dispositivo.

Mas se você usar o Visual Studio para desenvolver aplicativos no nível do usuário, poderá usá-lo para o desenvolvimento do driver de dispositivo do kernel também com Visualddk (+ VirtualKD Para depurar um Pipe nomeado, que é mais rápido do que em uma porta virtual com), que aborda especificamente os aborrecimentos que você mencionou; Na página inicial:

... Este projeto traz a simplicidade e a conveniência do desenvolvimento de aplicativos do Windows para o mundo do desenvolvimento de driver. Não há mais criação manual de scripts de construção, cópia de arquivos de driver, instalando drivers do INFS, alternando entre o WindBG e o editor de origem ou aguardando segundos após cada etapa devido à porta com com com companha extra-llow. Basta criar um projeto de driver usando um assistente de driver conveniente, selecionar uma máquina virtual e aproveitar o driver diretamente do Visual Studio. Quer testar uma mudança? Normalmente, pressione o Shift-F5, modifique seu motorista, reconstrua-o e lance novamente. O VisualDDK descarregará o driver antigo, instalará o novo e o carregará automaticamente e rapidamente. Entediado com arquivos de símbolo de carregamento do Windbg por minutos e procurando símbolos por segundos? Deixe o VisualDDK otimizar isso para você usando seu próprio mecanismo de símbolo baseado em DIA. Usando C ++/Stlport em seus drivers? O VisualDDK visualizará de forma nativa todos os contêineres e strings STL, tão bons quanto o Visual Studio para aplicativos no modo de usuário. ...

Outras dicas

Você pode escrever alguns scripts de shell (usando SC.EXE e devCon.exe) para automatizar tarefas de implantação (sem gerenciador de dispositivos de abertura, clicando em botões, etc.). E faça o instantâneo do sistema pronto para depuração (não preciso esperar pela inicialização do sistema).

Não se esqueça de verificar seu motorista com o DriverVerriFier!

Exemplo do meu próprio script :)

sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys
sc start FsFilter
pause
sc stop FsFilter
sc delete FsFilter

Siga o conselho que dei aqui. Basicamente, teste o mínimo possível com o sistema real.

No seu caso, tenho outra dica: o Virtual PC está usando um disco rígido virtual (isso provavelmente é um arquivo no seu disco rígido real).

Você não precisa instalar seu driver, basta substituir os novos arquivos no disco rígido virtual. Isso geralmente não é possível no sistema em execução, mas em um sistema virtual, você pode abrir o arquivo de disco virtual e alterá -lo (já que o Windows não está bloqueando os arquivos).

Não tenho certeza sobre o PC virtual, mas outros emuladores vêm com ferramentas para trabalhar com imagens de disco virtual. Se o VPC não puder fazer isso, confira VirtualBox.

Tudo depende um pouco do tipo de motorista que você está escrevendo. Mas, em muitos casos, escrever um makefile apropriado (ou algo semelhante) que lida com a instalação do driver, o início/parada e o lançamento de um chicote de teste já pode ser bom o suficiente.

Eu também configuro todas as minhas máquinas de teste para logon automaticamente (AutoadMinLogon), mapear unidades de rede e iniciar um prompt de comando apropriado após a inicialização. Executar um teste específico é então uma questão de digitar apenas um único comando.

Uma palavra sobre VirtualPC: o VirtualPC é muito útil para o desenvolvimento do modo de kernel, mas não se esqueça que emula apenas uma máquina uniprocessadora - portanto, também teste regularmente o código em uma máquina multiprocessadora. Dito isto, o truque do VHD pode parecer útil, mas o vincula um PC virtual - escrevendo scripts apropriados que funcionam igualmente no VirtualPC, como em uma máquina real, portanto, parece uma abordagem melhor para mim.

Por fim, considere um plugue sem vergonha, mas se você estiver procurando por uma estrutura de teste de unidade para o código do modo Windows Kernel, escrevi um: cfix.

Eu acho que o utilitário devcon (descrito em Este artigo online da OSR) Ajudará você. Você poderá configurar arquivos em lote que fazem o trabalho em um clique.

É gratuito se inscrever no Osronline.com e você provavelmente terá que se inscrever para chegar a esse artigo. E se você está escrevendo motoristas, deseja se inscrever. Esses caras fazem isso há muito tempo, e há muitas informações realmente boas nesse site.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top