CDRなどのメディア自体のメーカー名の取得方法は?


メディカル  2007-02-10 10:19:28  No: 24849  IP: 192.*.*.*

CDドライブではなく、CDそのものにメーカー名などの情報が書かれている
ようなのですがCCDR Media Code Identifierなどのようにそのメーカー名や
他のソフトでは色素まで取れるものがありますがこれをDelphiで行ないたいと思っています。

Manufacture
WMI
ASPI
SPTI
DeviceIoControl
IOCTL_CDROM_DISK_TYPE

などのキーワードのあらゆる組み合わせで検索したのですが、ソフトの動作上必要ないような事のためかメーカー名を取得するDelphiのサンプルなどが見つかりません。検索に30時間くらいこのためだけに探し続けて費やして疲れてしまっていますがまだ調べている最中です。
CDの種類などを判別する方法などはわかっているのですが、色素やメーカー名を取得する事でさらに識別したいと思っているのでキーワードが間違っているなどどなたがご存知ないでしょうか?
OSによって取得する方法が違ったりするようですが、主にXP以降での使用と考えています。
よろしくお願いします。

編集 削除
XO  2007-02-10 18:54:22  No: 24850  IP: 192.*.*.*

ATIPのことですね

編集 削除
メディカル  2007-02-10 21:13:27  No: 24851  IP: 192.*.*.*

すいません。そのキーワードを追加し忘れていました。
それでも調べたのですが有効なものを見つけきれませんでした。

編集 削除
かふぇ  2007-02-12 13:42:22  No: 24852  IP: 192.*.*.*

「cdrecord」というソース付きのソフトがあります。
本来はライティング用みたいですが、メディア情報を取得しているので参考になるかもしれません。

読み込んでいる所は、「scsi_cdr.c」の794行目
「read_disk_info()」という関数で行なっています。

この関数は EXPORT されているのでドライバで用意されているものみたいなので、完全に自前で・・・という場合には参考にはならないかな。

編集 削除
かふぇ  2007-02-12 13:48:55  No: 24853  IP: 192.*.*.*

すいません補足です。

メーカー名はメディアには入ってないようですね。
先の「read_disk_info()」を行なうとメーカーコードみたいなのが取れて、
ソース「diskid.c」で定義されているメーカー名コードと照らし合わししている感じです。

ではでは。

編集 削除
メディカル  2007-02-12 23:25:33  No: 24854  IP: 192.*.*.*

かふぇさん、ありがとうございます。
昨日、cdrecordでATIPが取得できる事がわかって本日Delphiにて
そのデータを参照するようにプログラムしてみてうまくいったの
ですが・・・

ドライブによってはこのcdrecordではATIP情報を取得できないようです。
CDR Identifierを使うとcdrecordで読み取れないドライブのATIP情報も
表示されます。

読み取れないドライブがあると困りものですが読み取る形式が違うのかも
しれないですね。

編集 削除
かふぇ  2007-02-13 13:00:19  No: 24855  IP: 192.*.*.*

> ドライブによってはこのcdrecordではATIP情報を取得できないようです。

そのドライブはティアック製ではないですか?
このソースを見て見ると read_disk_info_teac() という関数も
あります。

どうでしょうか?

編集 削除
メディカル  2007-02-14 22:46:17  No: 24856  IP: 192.*.*.*

ドライブは、MATSHITA製みたいです。

read_disk_info_teacの関数は、cdrecordから直接実行させる事が
できるんでしょうか?( ^ ^;A)
どう利用していいのかがわからないですね^^;

編集 削除
かふぇ  2007-02-15 10:57:23  No: 24857  IP: 192.*.*.*

read_disk_info_teac() 関数って SCSI構造体を設定して scsicmd() を
呼んでいる関数なんですね。

> そのデータを参照するようにプログラムしてみてうまくいったの
ですが・・・

これは read_disk_info() の呼び出しに成功していると見ても良いですか?
それならば drv_jcv.c(1037) を参考にして色々試して見るしかないのかなぁ・・・

要はドライバで用意されている scsicmd() をどうやって使うか?だと思うのですが、良いサンプルが見つけられませんでした。

編集 削除
メディカル  2007-02-16 16:35:57  No: 24858  IP: 192.*.*.*

いろいろ調べてくださってありがとうございます。
データを参照するようにできたのは
コマンドラインにてcdrecordにATIPのオプションを追加してその情報を
Delphiにて取得したという意味です。
説明不足ですいません。

read_disk_infoは、ソースの中にあるという事ですよね?
そういうオプションが見当たらないのでどう試していいかがわからなかったのです。

編集 削除