¿Quitar de forma segura una unidad USB utilizando la API Win32?
Pregunta
¿Cómo quito una unidad USB usando la API de Win32?Trabajo mucho en sistemas integrados y en uno de ellos tengo que copiar mis programas en una memoria USB e insertarla en el hardware de destino.
Como trabajo principalmente en la consola, no me gusta usar el mouse y hacer clic en el pequeño ícono de la barra de tareas cientos de veces al día.
Me encantaría escribir un pequeño programa para hacer exactamente eso y poder ponerlo en mis archivos MAKE, pero no he encontrado ninguna llamada API que haga lo mismo.
¿Algunas ideas?
Solución
Puede utilizar la función CM_Request_Device_Eject() así como algunas otras posibilidades.Consulta los siguientes proyectos y artículos:
DevEject:Directo.http://www.withopf.com/tools/deveject/
Un artículo útil de CodeProject:http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx
Otros consejos
Parece que Sincronizar le permite especificar -e para expulsar unidades extraíbles.Si bien no es una API win32, probablemente podrías simplemente llamar sync -e [drive_letter]
desde su archivo MAKE.
Aquí hay un artículo técnico sobre medios de almacenamiento extraíbles.Buscar DismountNtmsMedia
.
Aquí hay una solución en Delphi, que modifiqué y puse en un servicio para usar en una empresa muy grande.Ir a: Texto del enlace
Busque "scapi (API del administrador de configuración y configuración)" y descárguelo.Habrá un programa de demostración llamado USBView que le ayudará a seguir su camino.Si tiene Delphi, esto también incluye un componente TUSBDeviceTree que puede usar para recopilar información sobre un dispositivo USB cuando.
Saludos