检测光盘是否在DVD驱动器中

Ice*_*ind 6 c#

是否有一种简单的方法可以检测DVD驱动器中是否插入了光盘?我不在乎什么样的光盘(CD,DVD或蓝光)?

Ria*_*Ria 14

使用WMI检测CD/DVD驱动器中的磁盘:

foreach (var drive in DriveInfo.GetDrives()
                               .Where(d => d.DriveType == DriveType.CDRom))  
MessageBox.Show(drive.Name + " " + drive.IsReady.ToString()); 
Run Code Online (Sandbox Code Playgroud)

这里开始.

DriveType Enumeration可以帮助您获得什么样的光盘:

  • CDRom :驱动器是光盘设备,例如CD或DVD-ROM.
  • Fixed :驱动器是固定磁盘.
  • Network :驱动器是网络驱动器.
  • NoRootDirectory 该驱动器没有根目录.
  • Ram :驱动器是RAM磁盘.
  • Removable :驱动器是可移动存储设备,如软盘驱动器或USB闪存驱动器.
  • Unknown :驱动器类型未知.

对于CD/DVD /蓝光的种类,请参阅IMAPI_MEDIA_PHYSICAL_TYPE枚举:

  • 未知
  • 光盘
  • CDR
  • CDRW
  • DVDROM
  • DVDRAM
  • DVDPLUSR
  • DVDPLUSRW
  • DVDPLUSR_DUALLAYER
  • DVDDASHR
  • DVDDASHRW
  • DVDDASHR_DUALLAYER
  • DISK
  • DVDPLUSRW_DUALLAYER
  • HDDVDROM
  • HDDVDR
  • HDDVDRAM
  • BD-ROM
  • BDR
  • BD-RE
  • MAX

你的代码可能是这样的:

public bool IsDiscAvailable(int driveNumber)
{
    MsftDiscMaster2Class discMaster = new MsftDiscMaster2Class();
    string id = discMaster[driveNumber];

    MsftDiscRecorder2Class recorder = new MsftDiscRecorder2Class();
    recorder.InitializeDiscRecorder(id);

    MsftDiscFormat2DataClass dataWriter = new MsftDiscFormat2DataClass();
    if (dataWriter.IsRecorderSupported(recorder))
    {
        dataWriter.Recorder = recorder;
    }
    else
    {
        Console.WriteLine("Recorder not supported");
        return false;
    }
    if (dataWriter.IsCurrentMediaSupported(recorder))
    {
        var media = dataWriter.CurrentPhysicalMediaType;
        if (media == IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_UNKNOWN)
        {
            Console.WriteLine("Unknown media or no disc");
        }
        else
        {
            Console.WriteLine("Found disc type {0}", media);
            return true;
        }
    }
    else
    {
        Console.WriteLine("Disc absent or invalid.");
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这里开始.