この仕事をやってて面白いのは、やっぱり、『できない』と思っていたことが『やっぱりできるじゃん』っていうとき。とりあえず、メモ。
IVdsServiceLoader -> IVdsService -> IVdsSwProvider -> IVdsPack -> IVdsVolume -> IVdsVolumeMF / IVdsVolumeMF2 / IVdsVolumeMF3 という感じでたどればいいのかな。とりあえず、IVdsVolumeMF::Format() メソッドは OK な感じ。
IVdsService から QueryDriveLetters() しつつ、GetObject() して、IVdsVolume というショートカットもありかも。ちょっと試してみよう。
IMAPI やらを使って CD/DVD に書き込みを行うようなプログラムを作るとき、面倒なのが実際の書き込みの検証作業です。いちいちメディアを用意して、書き込みを行なうのはいいんですが、書き込みを行なったメディアはゴミ箱一直線ですし。で、何かないかなぁ? と探していたんですが、こんなの が見つかりました。
Virtual CD ってのは、ようするに、仮想 CD-R ドライブです。そのまんまですが。DVD やら Blu-ray あたりの機能もあります。仮想的なメディアを作成して、このドライブに突っ込んでおくと、Windows から見て CD-R ドライブに見えると。とりあえず、エクスプローラから書き込みを行ったり、ってのはできるのを確認しました。かなりいい感じ。
単なる仮想 CD ( .iso ファイルを読み込む )、ってことでいえば、大御所の Daemon Tools をはじめ、いろんなツールがあるわけですが、仮想 CD-R ドライブってのは結構目からウロコ。考えてみると、iTunes から DRM がかかった音楽ファイルを抜き出す、なんてツールでは、仮想 CD-R ドライブを使ってる ( CD への書き出しはできるので、仮想 CD-R ドライブを利用して書き出し、再度読み込み、みたいなことをやってるみたいです ) わけで、何らかのツールがあるんだろうとは思ってましたが。
とりあえず、ちょこちょこ試してみようと思います。