如何以编程方式确定驱动器是否是Windows下的DVD-RW / CD-RW?

时间:2013-01-07 00:45:28

标签: c winapi visual-c++ device drive

我想阻止用户将文件备份到光盘,因此我必须确定CDROM驱动器是否可写。

在Windows下如何做?

3 个答案:

答案 0 :(得分:3)

Windows CD刻录机的驱动器索引(0 = A,1 = B等)可以在注册表中找到 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CD Burning \ DriveIndex

答案 1 :(得分:1)

正如本页所述: http://msdn.microsoft.com/en-us/library/windows/desktop/bb776153%28v=vs.85%29.aspx

GetRecorderDriveLetter将返回驱动器号,它是一个刻录机(如果存在),如果没有可以刻录CD的驱动器,它将返回错误代码。

如果您需要更多样品,只需搜索API

即可

答案 2 :(得分:1)

您可以使用开源CD / DVD录制应用InfraRecordergit repo)使用的方法。

InfraRecorder使用ckmmc库来获取使用ckmmc::DeviceManager类的兼容设备列表(当然它支持多个设备)。

首先,它使用ckmmc DeviceManager::scan()扫描所有设备,然后使用方法MmcDevice::recorder()检查设备是否为记录器。

你会认为使用GetDriveType()DeviceIoControl()之类的东西必须有更简单的方法,但不幸的是,这并不是那么简单。

ckmmc支持两种不同的设备访问方法:ASPI(高级SCSI编程接口)和SPTI(SCSI传递接口)。为了获得驱动器属性,它实际上将SCSI命令发送到设备,然后它才能分析SCSI模式页面并告知哪些记录模式(CD-R,CD-RW,DVD-R,DVD + R等)硬件支持(如果有的话)。