winapi - los - historia de dispositivos de almacenamiento masivo
¿Cómo expulsa un dispositivo de almacenamiento masivo USB mediante programación? (5)
Esta pregunta ya tiene una respuesta aquí:
¿Cómo expulsa (quita) de forma programática un dispositivo de almacenamiento masivo USB en Windows (XP)?
Hay un artículo sobre CodeProject: http://www.codeproject.com/KB/system/usbeject.aspx
Parece funcionar.
/ johan /
Puede generar un proceso y usar una herramienta de línea de comando . Esto también funcionaría desde otros lenguajes como java, donde llamar a la API de Win32 es más difícil.
Aquí hay un proyecto (con código fuente) que parece haberlo descifrado.
Primero descarga el código de http://www.codeproject.com/Articles/13530/Eject-USB-disks-using-C
Luego importe las clases de la carpeta "Biblioteca" a su proyecto
Y ponga este código en su botón de clic.
private void btnExpulsar_Click(object sender, RoutedEventArgs e)
{
//Expulsa todas las unidades
VolumeDeviceClass volumeDeviceClass = new VolumeDeviceClass(); //Enlista las unidades
foreach (var item in volumeDeviceClass.Devices.ToList())
{
if (item.IsUsb)//Verifica que sean unidades USB
{
item.Eject(true); //Expulsa las unidades
}
}
}
En autoit , tienes un script que hace precisamente eso.
Básicamente proviene de este artículo de Microsoft y utiliza la función kernel32.dll DeviceIoControl
Por supuesto, ¿esta pregunta parece ser un duplicado de la extracción segura de la unidad USB mediante la API de Win32? , que da otras soluciones