今日のジャンク.txt

プログラムメモ、きまぐれ日記、etc...

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[VC] IMAPI v1 (その1)

何回かに分けて、VC++で『Image Mastering API Version1.0 (IMAPIv1)』の使い方をメモっていきます。

IMAPIv1とは、アプリケーションからCD-R/CD-RWに対してイメージの書き込みをサポートする機能で、WinXP以降のOSで利用できます。ちなみに、Vistaでは各種DVDメディアへの書き込みや、UDFフォーマットがサポートされたIMAPIv2が利用できます。

今回は、IMAPIv1でドライブ、メディア情報を取得してみましょう。

まず、IMAPIv1をプログラムから利用するためには、"imapi.h"をインクルードします。 "imapi.h"は『Platform SDK』で提供されているヘッダファイルなので、VisualStudio等で開発する場合は、最新のSDKをインストールして、ヘッダファイルを含むフォルダがコンパイラから参照できるように設定する必要があります。
Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
(07/02/04 時点での最新SDK)

IMAPIもCOMで実装されているので、手順としては以下のような感じかな。

  1. CoCreateInstance()で、MSDiscMasterObjオブジェクトのインスタンスを生成して、IDiscMasterのインタフェースを取得。
  2. IDiscMaster::Open()でIMAPIのアクセスを開始。
  3. IDiscMaster::EnumDiscRecorders()で、レコーダードライブの列挙をIEnumDiscRecordersインタフェースで取得。
  4. IEnumDiscRecorders::Next()で、IDiscRecorderインタフェースを取得し、各レコーダードライブの情報にアクセスが可能。
  5. レコーダーに挿入されたメディアの情報にアクセスする場合、IDiscRecorder::QueryMediaInfo()IDiscRecorder::QueryMediaType()を使用。
  6. レコーダーのプロパティ情報を参照する場合、IDiscRecorder::GetRecorderProperties()で、IPropertyStorageインタフェースを取得。
  7. 最後にIDiscMaster::Close()で、IMAPIのアクセスを終了。

VC++2005用のサンプルはこちらをご参考下さい。

WinXPの場合、『IMAPI CD-Burning COM Service』サービスが動作していないと実行に失敗します(管理ツールのサービスで確認)。また、サンプルでは、DVDメディアや、サポートされていないフォーマットのメディアが挿入されていると、表示がおかしくなる場合があります。
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://junktxt.blog90.fc2.com/tb.php/22-e622793c
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。