問題タブ [cd-rom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - WinAPI を使用して CD-ROM ドライブのディスクの種類を識別する方法は?
オーディオ CD と混合 CD で動作するアプリケーションを作成しています。アプリケーションが使用するドライブに現在オーディオまたは混合タイプ (少なくとも 1 つのオーディオ トラックを含む) のディスクがあるかどうかを判断する方法が必要です。
ここまでで、ドライブが CD-ROM であることが で確認できましたGetDriveType
。ただし、実際にドライブ内にあるメディアを特定するのはそれほど簡単ではないことがわかりました。これは私がこれまでに持っているものです:
ただし、これは、Windows がオーディオとして認識されるすべてのディスクに「オーディオ CD」という名前を割り当てるという事実に依存しています。Windows での CD の名前はデータ トラックのボリューム名によって決定されるため、これは適切ではなく、混合モードの CD では惨めに失敗するでしょう。また、ブロックがここにあるのは、ドライブにディスクがまったくない場合に等しいエラーを返すelse
ことに気付いたからです。GetVolumeInformation
GetLastError
ERROR_INVALID_PARAMETER
CDROM_DISC_STATUS
理想的には、 Linux に存在する ioctlのようなものを探しています。CDS_NO_INFO
ディスクの内容に応じて、 、CDS_AUDIO
、CDS_MIXED
、またはその他の値を返します。
これを処理する他の方法はありますか?ミックスモードのディスクはどうですか?
c - CコードによるCD-ROMイジェクト
Cコードを介してCD ROMを取り出そうとしていますが、うまくいきません。ioctl が「5」I/O エラーを返しました。どこに問題があるのでしょうか?
この機能を試したところ
それは完全に機能します。しかし、私は最初の関数(eject_cdrom)でそれをやりたいです。
strace からの出力:
strace -f ./cdrom
assembly - x86 アセンブリで CD-ROM からセクターを読み取ることができません
OS32 オペレーティング システムの ISOSYS ブートローダから第 2 段階のブートローダをロードしようとしていますが、実行できないようです。CFは常に設定されているようです。これは CD/DVD から起動するもので、Debian GNU/Linux 7.6 (Wheezy) を使用しています。
isosys.asm は次のとおりです。
これは、第 2 段階の boot.asm です。
私はコンパイルしnasm -f bin isosys.asm -o ISOSYS
、nasm -f bin boot.asm -o BOOT
次に実行しmkdir iso
、cp ISOSYS iso/
次にcp BOOT iso/
ISOを生成しました:
genisoimage -no-emul-boot -boot-load-size 4 -eltorito-boot ISOSYS -o boot.iso iso/
VirtualBoxで実行しましたが、2番目のステージを読み込めません(ファイルが見つからない可能性がありますか?)と表示されます。これは、キャリーフラグが設定されていることを意味しますが、エラーが見つからないようです。
誰でも助けてくれますか?助けていただければ幸いです。:*
c - Windows で CD-ROM ドライブに READ CD コマンドを発行する方法は?
生の SCSI コマンドを CD-ROM ドライブに発行する必要があるアプリケーションに取り組んでいます。現在、ドライブに READ CD ( 0xBE
) コマンドを送信し、CD の特定のセクターからデータを取得するのに苦労しています。
次のコードを検討してください。
CDB はMMC-6 Revision 2gに従って組み立てられ、LBA 1 から 1 セクターを転送する必要があります。私は CD-DA ディスクのみを使用しているため、各セクターは 2352 バイトであり、2352 である理由sizeof(buf)
が説明されています。
簡潔にするために、エラーチェックは省略されています。デバッガーは、呼び出しDeviceIoControl
が正常に返され、内部の値が次のようになっていることを示しています。ioctl_bytes
0x2c
sptd.s
これは、コマンドがドライブによって正常に実行されたことを示しており、ScsiStatus
0 ( SCSI_STATUS_GOOD
) であり、センス データは返されませんでした。0xcc
ただし、アプリケーションがデバッグ モードでコンパイルされているため、データのバッファは書き込まれません。
ただし、CDB を次のような標準の INQUIRY コマンドに変更すると、次のようになります。
バッファは問い合わせデータで適切に満たされ、ドライブの名前、ベンダー、その他すべてを読み取ることができます。
Microsoft の SCSI_PASS_THROUGH_DIRECT に関するドキュメントによると、ターゲット バッファーのアライメントを既に試みました。実験的にバッファーを 64 バイトにアラインしてもうまくいきませんでしIOCTL_SCSI_GET_CAPABILITIES
た。必要なアラインメントを返すはずの を発行すると、次の情報が得られました。
これにより、1であるためアライメントは不要でAlignmentMask
あり、これが問題の原因であるとは思えません。興味深いことに、AdapterUsesPio
デバイス マネージャーはそうではないと言っていますが、1 です。
記録のために、以下のコードは Linux で適切に動作し、ターゲット バッファーは CD からのデータで満たされます。Windows と同様に、返される SCSI ステータスは 0 であり、センス データは返されません。
Windows コードは、Windows XP 上の Visual Studio C++ 2010 Express および WinDDK 7600.16385.1 でコンパイルされています。Windows XP でも動作します。
java - コマンド ライン命令で CD が取り出されないのはなぜですか?
プログラムでは、ISO Writer を使用して Cd を書き込みます。このリンクにより、-e コマンド ラインが原因で、コードは書き込み後に CD を取り出す必要があります。CD に書き込みますが、書き込み後に取り出されません。問題?
ドライブの名前をこの形式で追加するときに発生するエラーです。
python - PythonでCDファイルをWAVにリッピング
CD からファイルを WAV 形式 (または flac でも wav は正常に動作します) にリッピングできるようにする必要があるプログラムを作成しています。Windows 上で実行する必要があります。Express Rip と Audio Commander がコマンド ライン ツールとして推奨されている他の回答を見ました。しかし、Audio Commander のページはもう存在しないようです。Express rip についてはよくわかりません。
次に、メタデータを取得するための変異原について言及しました。
これらのユーティリティまたはこの目標の経験がある人はいますか? CD を WAV でリッピングし、そこにあるメタデータを保持し、可能であれば CD アーカイブでメタデータもチェックできるようにしたいと考えています。
誰かがこのようなことをしたり、モジュール、ユーティリティ、メソッドなどについて提案したりしたことがありますか? いくつかの小さな例でも役立ちます。これは、Python で CD をリッピングする例、またはタスクを実行するためのモジュールです。