Pergunta

Como faço para remover um drive USB usando a API Win32? Eu faço um monte de trabalho em sistemas embarcados e em um desses eu tenho para copiar meus programas em um stick USB e inseri-lo no hardware alvo.

Desde que eu principalmente o trabalho no console eu não gosto de usar o mouse e clique na pequena tarefa-bar ícone centena de vezes por dia.

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

Todas as idéias?

Foi útil?

Solução

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

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

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

Outras dicas

Parece que sincronização permite especificar -e para ejetar removível unidades. Embora não seja uma API Win32, você poderia provavelmente apenas chamar sync -e [drive_letter] do seu makefile.

Aqui é um TechNet artigo sobre meios de armazenamento removíveis. Procure DismountNtmsMedia.

Aqui está uma solução em Delphi, que eu tenha modificado e colocar em um serviço para uso em uma grande empresa. Ir para: link de texto

Procure "SCAPI (Setup & Config Manager API)", e fazer o download. Haverá um programa demo chamada USBView que você vai chegar em seu caminho. Se você tiver Delphi, isso também inclui um componente TUSBDeviceTree que você pode usar para coletar informações sobre um dispositivo USB quando.

Saudações

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