¿Quitar con seguridad una unidad USB con la API de Win32?

¿Cómo elimino una unidad USB con la API de Win32? Trabajo mucho en sistemas integrados y en uno de ellos tengo que copiar mis progtwigs en una memoria USB e insertarlos en el hardware de destino.

Como trabajo principalmente en la consola, no me gusta utilizar el mouse y hacer clic en el ícono de la barra de tareas pequeña cientos de veces al día.

Me encantaría escribir un pequeño progtwig para hacer exactamente eso, así puedo ponerlo en mis makefiles, pero no encontré ninguna llamada API que haga lo mismo.

¿Algunas ideas?

Puede usar la función CM_Request_Device_Eject () así como algunas otras posibilidades. Consulte 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

Consulte el artículo Q165721 de Microsoft Knowledge Base: http://support.microsoft.com/kb/165721 – incluye el código fuente completo de C.

Parece que Sync le permite especificar -e para expulsar unidades extraíbles. Aunque no es una API de win32, probablemente puedas simplemente llamar a la sync -e [drive_letter] desde tu archivo MAKE.

Este artículo y muestra deberían hacer el truco: http://support.microsoft.com/default.aspx?scid=kb;en-us;165721

Aquí hay un artículo de Technet sobre medios de almacenamiento extraíbles. Busque DismountNtmsMedia .

Aquí hay una solución en Delphi, que he modificado y puesto en un servicio para su uso en una empresa muy grande. Ir a: enlace de texto

Busque “scapi (API de configuración y administrador de configuración)” y descárguelo. Habrá un progtwig de demostración llamado USBView que lo pondrá en camino. Si tiene Delphi, esto también incluye un componente TUSBDeviceTree que puede usar para recostackr información sobre un dispositivo USB cuando.

Saludos