IWICComponentFactory
COM公式ドキュメント
コンポーネント開発者が使用するコンポーネントを作成するためのメソッドを公開します。これには、コーデックおよびメタデータ ハンドラーの開発者が使用するメタデータ リーダー、ライター、その他のサービスが含まれます。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定されたパラメーターに基づいて IWICMetadataReader を作成します。(IWICComponentFactory.CreateMetadataReader)
| guidMetadataFormat | GUID* | in | 目的のメタデータ形式の GUID。 |
| pguidVendor | GUID* | in | 目的のメタデータ リーダー ベンダーの GUID へのポインター。 |
| dwOptions | DWORD | in | メタデータ リーダーの作成時に使用する WICPersistOptions および WICMetadataCreationOptions オプション。 |
| pIStream | IStream* | in | リーダーの初期化に使用するストリームへのポインター。NULL の場合、メタデータ リーダーは空になります。 |
| ppIReader | IWICMetadataReader** | out | 新しいメタデータ リーダーへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定されたパラメーターに基づいて IWICMetadataReader を作成します。(IWICComponentFactory.CreateMetadataReaderFromContainer)
| guidContainerFormat | GUID* | in | リーダーの基にするコンテナー形式の GUID。 |
| pguidVendor | GUID* | in | メタデータ リーダーのベンダー GUID へのポインター。 |
| dwOptions | DWORD | in | メタデータ リーダーの作成時に使用する WICPersistOptions および WICMetadataCreationOptions オプション。 |
| pIStream | IStream* | in | リーダーの初期化に使用するストリームへのポインター。NULL の場合、メタデータ リーダーは空になります。 |
| ppIReader | IWICMetadataReader** | out | 新しいメタデータ リーダーへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定されたパラメーターに基づいて IWICMetadataWriter を作成します。
| guidMetadataFormat | GUID* | in | 目的のメタデータ形式の GUID。 |
| pguidVendor | GUID* | in | 目的のメタデータ リーダー ベンダーの GUID へのポインター。 |
| dwMetadataOptions | DWORD | in | メタデータ リーダーの作成時に使用する WICPersistOptions および WICMetadataCreationOptions オプション。 |
| ppIWriter | IWICMetadataWriter** | out | 新しいメタデータ ライターへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定された IWICMetadataReader から IWICMetadataWriter を作成します。
| pIReader | IWICMetadataReader* | in | メタデータ ライターの基にするメタデータ リーダーへのポインター。 |
| pguidVendor | GUID* | in | 目的のメタデータ リーダー ベンダーの GUID へのポインター。 |
| ppIWriter | IWICMetadataWriter** | out | 新しいメタデータ ライターへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定された IWICMetadataBlockReader から IWICMetadataQueryReader を作成します。
| pIBlockReader | IWICMetadataBlockReader* | in | クエリ リーダーの基にするブロック リーダーへのポインター。 |
| ppIQueryReader | IWICMetadataQueryReader** | out | 新しいメタデータ クエリ リーダーへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定された IWICMetadataBlockWriter から IWICMetadataQueryWriter を作成します。
| pIBlockWriter | IWICMetadataBlockWriter* | in | メタデータ クエリ ライターの基にするメタデータ ブロック リーダーへのポインター。 |
| ppIQueryWriter | IWICMetadataQueryWriter** | out | 新しいメタデータ クエリ ライターへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
エンコーダー プロパティ バッグを作成します。
| ppropOptions | PROPBAG2* | in | エンコーダー プロパティ バッグの作成に使用する PROPBAG2 オプションの配列へのポインター。 |
| cCount | DWORD | in | ppropOptions 配列内の PROPBAG2 構造体の数。 |
| ppIPropertyBag | IPropertyBag2** | out | エンコーダーの IPropertyBag2 へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWICComponentFactory "{412D0C3A-9650-44FA-AF5B-DD2A06C8E8FB}" #usecom global IWICComponentFactory IID_IWICComponentFactory "{}" #comfunc global IWICComponentFactory_CreateMetadataReader 28 var,var,int,sptr,sptr #comfunc global IWICComponentFactory_CreateMetadataReaderFromContainer 29 var,var,int,sptr,sptr #comfunc global IWICComponentFactory_CreateMetadataWriter 30 var,var,int,sptr #comfunc global IWICComponentFactory_CreateMetadataWriterFromReader 31 sptr,var,sptr #comfunc global IWICComponentFactory_CreateQueryReaderFromBlockReader 32 sptr,sptr #comfunc global IWICComponentFactory_CreateQueryWriterFromBlockWriter 33 sptr,sptr #comfunc global IWICComponentFactory_CreateEncoderPropertyBag 34 var,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWICComponentFactory "{412D0C3A-9650-44FA-AF5B-DD2A06C8E8FB}" #usecom global IWICComponentFactory IID_IWICComponentFactory "{}" #comfunc global IWICComponentFactory_CreateMetadataReader 28 sptr,sptr,int,sptr,sptr #comfunc global IWICComponentFactory_CreateMetadataReaderFromContainer 29 sptr,sptr,int,sptr,sptr #comfunc global IWICComponentFactory_CreateMetadataWriter 30 sptr,sptr,int,sptr #comfunc global IWICComponentFactory_CreateMetadataWriterFromReader 31 sptr,sptr,sptr #comfunc global IWICComponentFactory_CreateQueryReaderFromBlockReader 32 sptr,sptr #comfunc global IWICComponentFactory_CreateQueryWriterFromBlockWriter 33 sptr,sptr #comfunc global IWICComponentFactory_CreateEncoderPropertyBag 34 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。