如何检测CDRom在Linux上是否是DVD

时间:2019-07-19 16:07:15

标签: c++ linux dvd cd-rom cddvd

我正在寻找在Linux上运行的C ++中创建一个函数,如果CDRom媒体是DVD,则返回true,否则返回false(例如,音频CD)。

我一直在将ioctllinux/cdrom.h一起使用。 我尝试使用DVD_READ_STRUCT,但始终返回true。也许我使用不正确。

dvd_struct s
if (ioctl(hDEV, DVD_READ_STRUCT, &s)) {
    return true;
}

1 个答案:

答案 0 :(得分:1)

看看/proc/sys/dev/cdrom/info,它包含以下内容:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:         sr0
drive speed:        125
drive # of slots:   1
Can close tray:     1
Can open tray:      1
Can lock tray:      1
Can change speed:   1
Can select disk:    0
Can read multisession:  1
Can read MCN:       1
Reports media changed:  1
Can play audio:     1
Can write CD-R:     1
Can write CD-RW:    1
Can read DVD:       1
Can write DVD-R:    1
Can write DVD-RAM:  1
Can read MRW:       0
Can write MRW:      0
Can write RAM:      1

(它由内核更新,并且在所有发行版中都可用) 除了ioctl中的cdrom.h之外,您还可以使用此信息。还请记住,cdrom.h是一种尝试创建标准接口的尝试,它尚不能满足所有制造商的需要,有些制造商仍在使用SCSI代码或某些其他专有方案。为了安全起见,您还应该至少使用SCSI ioctl代码进行检查-进行#include <scsi/...使其可用。