Vous pouvez utiliser la méthode utilisée par l'application d'enregistrement de CD/DVD open source InfraRecorder (git repo).
InfraRecorder utilise la bibliothèque ckmmc pour obtenir la liste des périphériques compatibles utilisant la classe ckmmc::DeviceManager
(elle prend en charge plusieurs périphériques, bien sûr).
D'abord, il analyse tous les périphériques à l'aide de ckmmc DeviceManager::scan()
, puis vérifie si le périphérique est un enregistreur utilisant la méthode MmcDevice::recorder()
.
Vous penserez qu'il doit y avoir un moyen plus facile de le faire en utilisant quelque chose comme GetDriveType()
ou DeviceIoControl()
, mais malheureusement, ce n'est pas si simple.
ckmmc
prend en charge deux méthodes d'accès aux périphériques différentes: ASPI (interface de programmation SCSI avancée) et SPTI (interface SCSI Pass-Through). Pour obtenir les propriétés du lecteur, il envoie des commandes SCSI à l'appareil, puis seulement il peut analyser la page du mode SCSI et indiquer les modes d'enregistrement (CD-R, CD-RW, DVD-R, DVD + R, etc ...) supports (le cas échéant).
Vous pouvez le faire en utilisant GetRecorderDriveLetter http://stackoverflow.com/questions/5825944/how-do-i-call-icdburngetrecorderdriveletter-in-vs2008-c-solving-xp-cd-wr –