我的用户最近遇到了一个恼人的问题。
我有一个基本上从cd,dvd或usb驱动器获取图像的应用程序,并将它们复制到网络中。
完成复制后,应自动弹出光盘。
问题是,当光盘被复制并进行弹出时,需要很长时间。我的一位用户说她等了一个小时才完成关闭并弹出。
在发生这种情况的其他光盘上,用户会尝试按下物理弹出按钮,弹出Windows 7上的气泡,并说等到会话结束后再弹出。
没有任何东西被刻录到光盘而光盘不是CD-RW或DVD-RW,所以我不明白它为什么需要关闭光盘上的会话。
最初刻录CD的人有可能搞砸了吗?
在今天到目前为止已经完成的250多张光盘中,这只发生在其中两张光盘上,这让我相信这些光盘有问题。
这是我弹出驱动器的方法:
private void Eject()
{
try
{
VolumeDeviceClass volumeDeviceClass = new VolumeDeviceClass();
foreach (Volume device in volumeDeviceClass.Devices)
{
if (!device.IsUsb)
continue;
if (device.LogicalDrive == null || (device.LogicalDrive.Length == 0))
continue;
/* Should get down here if our device is a usb drive */
device.Eject(true);
}
var sb = new StringBuilder();
mciSendString("open " + _driveName.Substring(0, 2) + " type cdaudio alias cddrive", sb, 127, IntPtr.Zero);
mciSendString("set cddrive door open", sb, 127, IntPtr.Zero);
}
catch (Exception ex)
{
ex.Log(ex.Message, Logger.Severity.Error, "Error ejecting CD drive: " + Environment.MachineName);
}
}