IWICMetadataQueryWriter
COM公式ドキュメント
メタデータクエリ式を使用して、エンコーダーまたはそのイメージフレームに対してメタデータブロックおよびメタデータ項目を設定または削除するためのメソッドを公開します。
解説(Remarks)
メタデータクエリライターは、メタデータクエリ式を使用してメタデータを設定または削除します。メタデータクエリ言語の詳細については、メタデータクエリ言語の概要を参照してください。
例
次のコードは、XMP クエリライターを作成し、新しいメタデータ項目を追加する方法を示しています。
// Create XMP block
IWICMetadataQueryWriter *pXMPWriter = NULL;
if (SUCCEEDED(hr))
{
hr = pFactory->CreateQueryWriter(GUID_MetadataFormatXMP, NULL, &pXMPWriter);
}
// Write metadata to the XMP writer
if (SUCCEEDED(hr))
{
PROPVARIANT value;
PropVariantInit(&value);
value.vt = VT_LPWSTR;
value.pwszVal = L"Metadata Test Image.";
hr = pXMPWriter->SetMetadataByName(L"/dc:title", &value);
PropVariantClear(&value);
}
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メタデータ項目を特定の場所に設定します。
| wzName | LPWSTR | in | メタデータ項目の名前。 |
| pvarValue | PROPVARIANT* | in | 設定するメタデータ。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
SetMetadataByName は、メタデータクエリ式を使用してメタデータを削除します。メタデータクエリ言語の詳細については、メタデータクエリ言語の概要を参照してください。
設定する値がネストされたメタデータブロックである場合は、バリアント型 VT_UNKNOWN を使用し、pvarValue が新しいメタデータブロックの IWICMetadataQueryWriter を指すようにします。
相対的な位置は指定されないため、メタデータ項目の順序はクエリライターの裁量に委ねられます。
メタデータクエリ式を使用して、特定の場所からメタデータ項目を削除します。
| wzName | LPWSTR | in | 削除するメタデータ項目の名前。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
RemoveMetadataByName は、メタデータクエリ式を使用してメタデータを削除します。メタデータクエリ言語の詳細については、メタデータクエリ言語の概要を参照してください。
メタデータ項目がメタデータブロックである場合は、メタデータ階層から削除されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWICMetadataQueryWriter "{A721791A-0DEF-4D06-BD91-2118BF1DB10B}" #usecom global IWICMetadataQueryWriter IID_IWICMetadataQueryWriter "{}" #comfunc global IWICMetadataQueryWriter_SetMetadataByName 7 wstr,var #comfunc global IWICMetadataQueryWriter_RemoveMetadataByName 8 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWICMetadataQueryWriter "{A721791A-0DEF-4D06-BD91-2118BF1DB10B}" #usecom global IWICMetadataQueryWriter IID_IWICMetadataQueryWriter "{}" #comfunc global IWICMetadataQueryWriter_SetMetadataByName 7 wstr,sptr #comfunc global IWICMetadataQueryWriter_RemoveMetadataByName 8 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。