3

光ディスク デバイス名 (例: /dev/disk4) は、Mac OS X では少し奇妙です。他の OS とは異なり、それらはドライブではなくマウントされたメディアに属しているため、ディスクが挿入されたときにのみ存在します。さらに、それらは決して安定していません。次のディスクがドライブに挿入される前に別の .dmg ファイルがマウントされると、それらはすでに変更されている可能性があります。Windows ではドライブ文字は安定しており、Linux には /dev/cdrom や /dev/sr0 などの非常に安定したデバイス名があります。ハードディスク、USB ドライブ、およびパッケージの変更は、光学デバイス名には影響しません。

私はオーディオ CD で動作する C ライブラリを開発し、Cから drutilによって公開されたドライブ番号付けを使用したいと考えていますdrutil listdrutil details -drive 1ディスクがドライブにある場合の (BSD) デバイス名を含むドライブ. これは、構成などで優先ドライブを設定するのに最適です.

CI では、ディスクのないドライブを一覧表示またはインデックス化できませんでした。そのため、最初に挿入されたディスクを取得すると、このディスクがどのドライブに属しているかわかりません。挿入されたディスクのデバイス名をIOCDMediaClass. (ディスクが挿入されているかどうかに関係なく) と一緒に 1 つのドライブが表示されIOCDBlockStorageDeviceClassますが、ドライブにディスクが入っていてもデバイス名にアクセスできません。

両方のクラスのメンバーと、可能な場合はデバイス名をリストしようとするコード例をいくつか用意しました。

ドライブにディスクがない場合の出力:

detected media:
detected CD block devices:
drive 1:
        class name: IODVDServices

ドライブにディスクがある出力:

detected media:
drive 1:
        device name: disk4
        class name: IOCDMedia
detected CD block devices:
drive 1:
        class name: IODVDServices

PS: C から drutil を呼び出せることはわかっていますが、それは最後の手段です。

4

1 に答える 1