IWMImageInfo
COM公式ドキュメント
IWMImageInfo インターフェイスは、ファイル内の ID3v2 "APIC"(attached picture)フレームに格納された画像を取得します。
解説(Remarks)
メタデータエディターからこのインターフェイスを取得する場合は、ファイルが開かれた後まで待ってから QueryInterface を呼び出す必要があります。IWMStatusCallback::OnStatus メソッドで WMT_OPENED メッセージを受け取る前に IWMImageInfo の QueryInterface を試みると、呼び出しは失敗します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetImageCount メソッドは、ID3v2 "APIC" フレームを使用してファイルに格納された画像の数を取得します。Windows Media 名前空間の属性を使用してファイルに格納された画像や、カスタム属性に格納された画像は、この数には含まれません。
| pcImages | DWORD* | out | 画像の数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcImages パラメーターが NULL です。 | |
| ファイル内に存在するはずの ID3 フレームの 1 つにアクセスできません。 |
GetImage メソッドは、ID3v2 "APIC" メタデータフレームとしてファイルに格納された画像を取得します。
| wIndex | DWORD | in | 画像のインデックスを格納する WORD。これは 0 から、IWMImageInfo::GetImageCount で取得した画像数より 1 小さい値までの数値です。 | ||||||||||||||||||||||||||||||||||||||||||||
| pcchMIMEType | WORD* | inout | pwszMIMEType の長さを、終端の NULL 文字を含めてワイド文字数で格納する WORD へのポインター。このメソッドの最初の呼び出しでは、pwszMIMEType に NULL を渡して、必要な文字数を取得します。 | ||||||||||||||||||||||||||||||||||||||||||||
| pwszMIMEType | LPWSTR | out | 画像に関連付けられた MIME タイプを格納する、ワイド文字の null 終端文字列へのポインター。最初の呼び出しでは NULL を設定します。すると pcchMIMEType に、この文字列の終端の NULL を含むワイド文字数が設定されます。 | ||||||||||||||||||||||||||||||||||||||||||||
| pcchDescription | WORD* | inout | pwszDescription の長さを、終端の NULL 文字を含めてワイド文字数で格納する WORD へのポインター。このメソッドの最初の呼び出しでは、pwszDescription に NULL を渡して、必要な文字数を取得します。 | ||||||||||||||||||||||||||||||||||||||||||||
| pwszDescription | LPWSTR | out | 画像の説明を格納する、ワイド文字の null 終端文字列へのポインター。最初の呼び出しでは NULL を設定します。すると pcchDescription に、この文字列の終端の NULL を含むワイド文字数が設定されます。 | ||||||||||||||||||||||||||||||||||||||||||||
| pImageType | WORD* | out | ID3v2 仕様で定義された画像の種類を格納する WORD 値へのポインター。以下のいずれかの値になります。
| ||||||||||||||||||||||||||||||||||||||||||||
| pcbImageData | DWORD* | inout | pbImageData が指す画像の長さをバイト単位で格納する DWORD へのポインター。このメソッドの最初の呼び出しでは、pbImageData に NULL を渡して、必要なバイト数を取得します。 | ||||||||||||||||||||||||||||||||||||||||||||
| pbImageData | BYTE* | out | 画像データを格納する BYTE バッファーへのポインター。最初の呼び出しでは NULL を設定します。すると pcbImageData に、バッファー内のバイト数が設定されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
次のパラメーターのうち 1 つ以上が NULL です。
pcchMIMEType
pcbImageData |
|
| ファイル内に存在するはずの ID3 フレームの 1 つにアクセスできません。 | |
|
次のパラメーターのいずれかが参照する値が、対応する出力パラメーターに必要なバッファーサイズより小さくなっています。
pcchMIMEType pcchDescription pcbImageData |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMImageInfo "{9F0AA3B6-7267-4D89-88F2-BA915AA5C4C6}" #usecom global IWMImageInfo IID_IWMImageInfo "{}" #comfunc global IWMImageInfo_GetImageCount 3 var #comfunc global IWMImageInfo_GetImage 4 int,var,var,var,var,var,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMImageInfo "{9F0AA3B6-7267-4D89-88F2-BA915AA5C4C6}" #usecom global IWMImageInfo IID_IWMImageInfo "{}" #comfunc global IWMImageInfo_GetImageCount 3 sptr #comfunc global IWMImageInfo_GetImage 4 int,sptr,sptr,sptr,sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。