ユーザーがファイルを光ディスクにバックアップできないようにしたいので、CDROM ドライブが書き込み可能かどうかを判断する必要があります。
Windowsの下で行う方法は?
ユーザーがファイルを光ディスクにバックアップできないようにしたいので、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()
、次に method を使用してデバイスがレコーダかどうかを確認しますMmcDevice::recorder()
。
GetDriveType()
またはのようなものを使用してこれを行う簡単な方法があるに違いないと思うかもしれませんがDeviceIoControl()
、残念ながらそれほど単純ではありません。
ckmmc
は、ASPI (Advanced SCSI Programming Interface) と SPTI (SCSI Pass-Through Interface) の 2 つの異なるデバイス アクセス方法をサポートしています。ドライブのプロパティを取得するために、実際に SCSI コマンドをデバイスに送信します。その後、SCSI モード ページを分析し、どの記録モード (CD-R、CD-RW、DVD-R、DVD+R など) のハードウェアかを判断できます。サポートします(ある場合)。