回答
您可以使用開放源代碼的CD/DVD刻錄應用InfraRecorder(git 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等)硬件支持(如果有的話)。
DeviceIoControl()可以用來直接發送ASPI/SPTI命令,沒有ckmmc就不會太困難。我之前已經完成了查找DVD特定驅動器和插入光盤的操作。 –
我猜如果有人真的這麼傾向,應該可以從ckmmc中提取這一點,並將其作爲單獨的函數 – mvp
在看到這個討論之前,我從來沒有聽說過ckmmc,否則我會反過來使用它: - ) –
的Windows CD刻錄機的驅動器號(0 = A,1 = B,等等)可以在註冊表中HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ Explorer的\ CD刻錄\ DriveIndex被發現。
如果有兩個CD刻錄機會怎麼樣? – SLaks
Windows本身不支持多個刻錄機。然而,第三方工具可能會。如果你想阻止這些,你需要使用更低級別的東西來查詢驅動器類型。 –
注意:按照@Vahid Farahmand的建議使用ICDBurn界面可能比讀取註冊表更好。 –
由於此頁解釋: http://msdn.microsoft.com/en-us/library/windows/desktop/bb776153%28v=vs.85%29.aspx
GetRecorderDriveLetter將返回驅動器盤符是燃燒器(如果存在),或者如果沒有驅動器可能刻錄CD它會返回一個錯誤代碼。
如果你需要更多的樣品,只是搜索的API
- 1. 如何以編程方式確定Windows是否正在關機?
- 2. 如何以編程方式下載Google驅動器表單?
- 3. 如何確定驅動器是否是外置驅動器
- 4. 如何以編程方式確定ehcache是否正在運行?
- 5. 如何確定Windows安裝程序是否以編程方式完成
- 6. 如何以編程方式確定android是否連接到wifi?
- 7. 如何確定Windows AppFabric服務是否以編程方式運行?
- 8. 如何以編程方式確定驅動器的空間/大小?在LInux和Windows上
- 9. 以編程方式在Windows中切換音頻驅動程序?
- 10. SQL:以編程方式確定表是否爲視圖
- 11. 以編程方式從驅動器下載exportLink
- 12. 我可以編程方式查明驅動器是否在使用中?
- 13. PowerShell:如何從SnapIn以編程方式裝入驅動器
- 14. 以編程方式檢查驅動器號是否是共享/網絡驅動器
- 15. 如何確定JDBC驅動程序是否爲Type 4?
- 16. 如何以編程方式確定.NET程序集是否安裝在GAC中?
- 17. 如何以編程方式確定程序是否在用戶的路徑中
- 18. 如何以編程方式確定ndb屬性是否爲多值
- 19. 如何以編程方式確定XML節點是否爲葉節點?
- 20. 如何以編程方式確定某個元素是否爲自閉標記
- 21. 以編程方式確定IIS站點是否正在運行
- 22. 以編程方式安裝Windows NDIS中級(IM)驅動程序
- 23. 以編程方式鎖定C盤中的硬盤驅動器#
- 24. 是否有可能以編程方式檢查硒遠程Web驅動服務器是否正在運行
- 25. 如何以編程方式確定磁盤是否在OS X上加密?
- 26. 如何以編程方式確定Active Directory信任在OpenLDAP中是否傳遞?
- 27. 如何以編程方式確定提交是否在當前結帳
- 28. 如何以編程方式確定IIS網站是否正在接收請求?
- 29. 如何在c#中以編程方式確定類型是否接受空值?
- 30. 如何確定Magento是否以編程方式在Apache上運行?
您可以用做 GetRecorderDriveLetter http://stackoverflow.com/questions/5825944/how-do-i-call-icdburngetrecorderdriveletter-in-vs2008-c-solving-xp-cd-wr –