it-swarm-pt.tech

Remover com segurança uma unidade USB usando a API do Win32?

Como faço para remover uma unidade USB usando a API do Win32? Faço muito trabalho em sistemas embarcados e, em um deles, tenho que copiar meus programas em um pendrive e inseri-lo no hardware de destino.

Como trabalho principalmente no console, não gosto de usar o mouse e clicar no pequeno ícone da barra de tarefas cem vezes por dia.

Adoraria escrever um pequeno programa para fazer exatamente isso, para que eu possa colocá-lo em meus makefiles, mas não encontrei nenhuma chamada de API que faça a mesma coisa.

Alguma ideia?

31
Nils Pipenbrinck

Você pode usar a função CM_Request_Device_Eject (), bem como algumas outras possibilidades. Consulte os seguintes projetos e artigos:

DevEject: Direto. http://www.withopf.com/tools/deveject/

Um artigo útil do CodeProject: http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx

18
Kris Kumler

Parece que Sync permite especificar -e para ejetar unidades removíveis. Embora não seja uma API do win32, você provavelmente poderia ligar para sync -e [drive_letter] do seu makefile.

5
Grant Wagner

Aqui está um artigo técnico sobre mídia de armazenamento removível. Procure por DismountNtmsMedia.

4
jop

Aqui está uma solução no Delphi, que eu modifiquei e coloquei em um serviço para uso em uma empresa muito grande. Vá para: texto do link

Procure por "scapi (API do Gerenciador de instalação e configuração)" e faça o download. Haverá um programa de demonstração chamado USBView que o levará a caminho. Se você possui o Delphi, isso também inclui um componente TUSBDeviceTree que você pode usar para coletar informações sobre um dispositivo USB quando.

Saudações

1
Mick