2013-01-07 24 views

回答

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等)硬件支持(如果有的話)。

+0

DeviceIoControl()可以用來直接發送ASPI/SPTI命令,沒有ckmmc就不會太困難。我之前已經完成了查找DVD特定驅動器和插入光盤的操作。 –

+0

我猜如果有人真的這麼傾向,應該可以從ckmmc中提取這一點,並將其作爲單獨的函數 – mvp

+0

在看到這個討論之前,我從來沒有聽說過ckmmc,否則我會反過來使用它: - ) –

3

的Windows CD刻錄機的驅動器號(0 = A,1 = B,等等)可以在註冊表中HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ Explorer的\ CD刻錄\ DriveIndex被發現。

+0

如果有兩個CD刻錄機會怎麼樣? – SLaks

+1

Windows本身不支持多個刻錄機。然而,第三方工具可能會。如果你想阻止這些,你需要使用更低級別的東西來查詢驅動器類型。 –

+0

注意:按照@Vahid Farahmand的建議使用ICDBurn界面可能比讀取註冊表更好。 –

相關問題