微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

使用WMI检测CD / DVD驱动器中的磁盘:
foreach (var drive in DriveInfo.GetDrives()
                               .Where(d => d.DriveType == DriveType.CDRom))  
MessageBox.Show(drive.Name + " " + drive.IsReady.ToString());

here.

DriveType Enumeration可以帮你什么样的光盘:

> CDRom:驱动器是光盘设备,例如CD或DVD-ROM.
>修正:驱动器是固定磁盘.
>网络:驱动器是网络驱动器.
> norootDirectory驱动器没有根目录.
> Ram:驱动器是RAM磁盘.
>可移动:驱动器是可移动存储设备,例如软盘驱动器或USB闪存驱动器.
>未知:驱动器类型未知.

对于CD / DVD /蓝光的种类见IMAPI_MEDIA_PHYSICAL_TYPE enumeration

>未知
> CDROM
> CDR
> CDRW
> DVDROM
> DVDRAM
> DVdplUSR
> DVdplUSRW
> DVdplUSR_DUALLAYER
> DVDDASHR
> DVDDASHRW
> DVDDASHR_DUALLAYER
>磁盘
> DVdplUSRW_DUALLAYER
> HDDVDROM
> HDDVDR
> HDDVDRAM
> BDROM
> BDR
> BDRE
> 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;
}

here.

原文地址:https://www.jb51.cc/csharp/97768.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐