me gusta usar DeviceIOControl ya que me da la posibilidad de expulsar cualquier tipo de unidad extraíble (como USB y flash-discos como bien como bandejas de CD). Da codez para expulsar un disco correctamente usando DeviceIOControl está (sólo añadir control de errores adecuada):
bool ejectDisk(TCHAR driveLetter)
{
TCHAR tmp[10];
_stprintf(tmp, _T("\\\\.\\%c:"), driveLetter);
HANDLE handle = CreateFile(tmp, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
DWORD bytes = 0;
DeviceIoControl(handle, FSCTL_LOCK_VOLUME, 0, 0, 0, 0, &bytes, 0);
DeviceIoControl(handle, FSCTL_DISMOUNT_VOLUME, 0, 0, 0, 0, &bytes, 0);
DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, 0, 0, 0, 0, &bytes, 0);
CloseHandle(handle);
return true;
}
¿Cómo funciona esto en un sistema con varias unidades? No veo nada para especificar un disco. – OwenP
-1 Votación hacia abajo, mci es una antigua tecnología (Win3.x) y solo funciona bien para una sola unidad. También Windows Media Player debe estar instalado? pero no estoy seguro Las versiones europeas 'N' de Windows no vienen con Media Player, así que ten cuidado. – unixman83
@unixman ¿cuál es la alternativa recomendada? ¿Es ese DeviceIoControl? – jalf