我想阻止用户将文件备份到光盘,所以我必须确定 CDROM 驱动器是否可写。
Windows下怎么办?
Windows CD 刻录机的驱动器索引(0 = A、1 = B 等)可以在注册表中的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning\DriveIndex中找到。
如本页所述:http: //msdn.microsoft.com/en-us/library/windows/desktop/bb776153%28v=vs.85%29.aspx
GetRecorderDriveLetter 将返回作为刻录机的驱动器号(如果存在),如果没有可以刻录 CD 的驱动器,它将返回错误代码。
如果您需要更多示例,只需搜索 API
您可以使用开源 CD/DVD 录制应用程序InfraRecorder ( git repo ) 使用的方法。
InfraRecorder 使用ckmmc库来获取使用类的兼容设备列表ckmmc::DeviceManager
(当然,它支持多个设备)。
首先它使用 ckmmc 扫描所有设备DeviceManager::scan()
,然后使用方法检查设备是否是记录器MmcDevice::recorder()
。
你会认为必须有更简单的方法来使用类似GetDriveType()
or的东西来做到这一点DeviceIoControl()
,但不幸的是它并不是那么简单。
ckmmc
支持两种不同的设备访问方法:ASPI(高级 SCSI 编程接口)和 SPTI(SCSI Pass-Through 接口)。要获取驱动器属性,它实际上会向设备发送 SCSI 命令,然后它才能分析 SCSI 模式页面并判断哪些记录模式(CD-R、CD-RW、DVD-R、DVD+R 等)硬件支持(如果有的话)。