Win32 API 日本語リファレンス
ホームMedia.WindowsMediaFormat › IWMImageInfo

IWMImageInfo

COM
IID9f0aa3b6-7267-4d89-88f2-ba915aa5c4c6継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMImageInfo インターフェイスは、ファイル内の ID3v2 "APIC"(attached picture)フレームに格納された画像を取得します。

解説(Remarks)

メタデータエディターからこのインターフェイスを取得する場合は、ファイルが開かれた後まで待ってから QueryInterface を呼び出す必要があります。IWMStatusCallback::OnStatus メソッドで WMT_OPENED メッセージを受け取る前に IWMImageInfoQueryInterface を試みると、呼び出しは失敗します。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetImageCount(DWORD* pcImages)

GetImageCount メソッドは、ID3v2 "APIC" フレームを使用してファイルに格納された画像の数を取得します。Windows Media 名前空間の属性を使用してファイルに格納された画像や、カスタム属性に格納された画像は、この数には含まれません。

pcImagesDWORD*out画像の数へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcImages パラメーターが NULL です。
E_UNEXPECTED
ファイル内に存在するはずの ID3 フレームの 1 つにアクセスできません。
vtbl 4 HRESULT GetImage(DWORD wIndex, WORD* pcchMIMEType, LPWSTR pwszMIMEType, WORD* pcchDescription, LPWSTR pwszDescription, WORD* pImageType, DWORD* pcbImageData, BYTE* pbImageData)

GetImage メソッドは、ID3v2 "APIC" メタデータフレームとしてファイルに格納された画像を取得します。

wIndexDWORDin画像のインデックスを格納する WORD。これは 0 から、IWMImageInfo::GetImageCount で取得した画像数より 1 小さい値までの数値です。
pcchMIMETypeWORD*inoutpwszMIMEType の長さを、終端の NULL 文字を含めてワイド文字数で格納する WORD へのポインター。このメソッドの最初の呼び出しでは、pwszMIMETypeNULL を渡して、必要な文字数を取得します。
pwszMIMETypeLPWSTRout画像に関連付けられた MIME タイプを格納する、ワイド文字の null 終端文字列へのポインター。最初の呼び出しでは NULL を設定します。すると pcchMIMEType に、この文字列の終端の NULL を含むワイド文字数が設定されます。
pcchDescriptionWORD*inoutpwszDescription の長さを、終端の NULL 文字を含めてワイド文字数で格納する WORD へのポインター。このメソッドの最初の呼び出しでは、pwszDescriptionNULL を渡して、必要な文字数を取得します。
pwszDescriptionLPWSTRout画像の説明を格納する、ワイド文字の null 終端文字列へのポインター。最初の呼び出しでは NULL を設定します。すると pcchDescription に、この文字列の終端の NULL を含むワイド文字数が設定されます。
pImageTypeWORD*out

ID3v2 仕様で定義された画像の種類を格納する WORD 値へのポインター。以下のいずれかの値になります。

説明
0 この表に明示的に記載されていない種類の画像
1 32 ピクセル × 32 ピクセルのファイルアイコン。portable network graphics(PNG)形式でのみ使用します。
2 上記のタイプ 1 に準拠しないファイルアイコン。
3 アルバムの表ジャケット。
4 アルバムの裏ジャケット。
5 リーフレットのページ。
6 メディア。通常、この種類の画像は CD のレーベル面です。
7 リードアーティスト、リードパフォーマー、またはソリストの画像。
8 参加アーティストまたはパフォーマーの 1 人の画像。
9 指揮者の画像。
10 バンドまたはオーケストラの画像。
11 作曲者の画像。
12 作詞者またはライターの画像。
13 レコーディングスタジオまたは場所の画像。
14 レコーディングセッション中に撮影された画像。
15 演奏中に撮影された画像。
16 映画またはビデオからのスクリーンキャプチャ。
17 明るい色の魚。
18 イラスト。
19 バンドまたはアーティストのロゴ。
20 出版社またはスタジオのロゴ。
pcbImageDataDWORD*inoutpbImageData が指す画像の長さをバイト単位で格納する DWORD へのポインター。このメソッドの最初の呼び出しでは、pbImageDataNULL を渡して、必要なバイト数を取得します。
pbImageDataBYTE*out画像データを格納する BYTE バッファーへのポインター。最初の呼び出しでは NULL を設定します。すると pcbImageData に、バッファー内のバイト数が設定されます。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
次のパラメーターのうち 1 つ以上が NULL です。

pcchMIMEType

pcbImageData

E_UNEXPECTED
ファイル内に存在するはずの ID3 フレームの 1 つにアクセスできません。
ASF_E_BUFFERTOOSMALL
次のパラメーターのいずれかが参照する値が、対応する出力パラメーターに必要なバッファーサイズより小さくなっています。

pcchMIMEType

pcchDescription

pcbImageData

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。