我的用户最近遇到了一个烦人的问题。
我有一个应用程序,它基本上从 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);
}
}