我正在寻找在Linux上运行的C ++中创建一个函数,如果CDRom媒体是DVD,则返回true,否则返回false(例如,音频CD)。
我一直在将ioctl
与linux/cdrom.h
一起使用。
我尝试使用DVD_READ_STRUCT
,但始终返回true。也许我使用不正确。
dvd_struct s
if (ioctl(hDEV, DVD_READ_STRUCT, &s)) {
return true;
}
答案 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/...
使其可用。