IWICBitmapCodecInfo
COM公式ドキュメント
特定のコーデックに関する情報を提供するメソッドを公開します。
メソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コーデックに関連付けられたコンテナー GUID を取得します。
| pguidContainerFormat | GUID* | out | コンテナー GUID を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
コーデックがサポートするピクセル形式を取得します。
| cFormats | DWORD | in | pguidPixelFormats 配列のサイズです。最初の呼び出しでは 0 を使用して、必要な配列サイズを確認します。 |
| pguidPixelFormats | GUID* | inout | サポートされるピクセル形式を受け取ります。最初の呼び出しでは NULL を使用して、必要な配列サイズを確認します。 |
| pcActual | DWORD* | out | サポートされるすべてのピクセル形式を取得するために必要な配列サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cFormats に 0、pguidPixelFormats に NULL を設定して呼び出すことで、サポートされるすべてのピクセル形式を取得するために必要な配列サイズを取得します。
この呼び出しにより、pcActual に必要な配列サイズが設定されます。
必要な配列サイズが判明したら、適切なサイズの配列を pguidPixelFormats に設定して 2 回目の GetPixelFormats を呼び出すことで、ピクセル形式を取得します。
コーデックがサポートするカラー マネジメントのバージョン番号を取得します。
| cchColorManagementVersion | DWORD | in | バージョン バッファーのサイズです。最初の呼び出しでは 0 を使用して、必要なバッファー サイズを確認します。 |
| wzColorManagementVersion | LPWSTR | inout | カラー マネジメントのバージョン番号を受け取ります。最初の呼び出しでは NULL を使用して、必要なバッファー サイズを確認します。 |
| pcchActual | DWORD* | out | カラー マネジメントのバージョン番号全体を取得するために実際に必要なバッファー サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cchColorManagementVersion に 0、wzColorManagementVersion に NULL を設定して呼び出すことで、カラー マネジメントのバージョン番号全体を取得するために必要なバッファー サイズを取得します。
この呼び出しにより、pcchActual に必要なバッファー サイズが設定されます。
必要なバッファー サイズが判明したら、cchColorManagementVersion にバッファー サイズを、wzColorManagementVersion に適切なサイズのバッファーを設定して 2 回目の GetColorManagementVersion を呼び出すことで、ピクセル形式を取得します。
コーデックに関連付けられたデバイス製造元の名前を取得します。
| cchDeviceManufacturer | DWORD | in | デバイス製造元名のサイズです。最初の呼び出しでは 0 を使用して、必要なバッファー サイズを確認します。 |
| wzDeviceManufacturer | LPWSTR | inout | デバイス製造元名を受け取ります。最初の呼び出しでは NULL を使用して、必要なバッファー サイズを確認します。 |
| pcchActual | DWORD* | out | デバイス製造元名を取得するために実際に必要なバッファー サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cchDeviceManufacturer に 0、wzDeviceManufacturer に NULL を設定して呼び出すことで、カラー マネジメントのバージョン番号全体を取得するために必要なバッファー サイズを取得します。
この呼び出しにより、pcchActual に必要なバッファー サイズが設定されます。
必要なバッファー サイズが判明したら、cchDeviceManufacturer にバッファー サイズを、wzDeviceManufacturer に適切なサイズのバッファーを設定して 2 回目の GetDeviceManufacturer を呼び出すことで、ピクセル形式を取得します。
コーデックに関連付けられたデバイス モデルのカンマ区切りリストを取得します。
| cchDeviceModels | DWORD | in | デバイス モデル バッファーのサイズです。最初の呼び出しでは 0 を使用して、必要なバッファー サイズを確認します。 |
| wzDeviceModels | LPWSTR | inout | コーデックに関連付けられたデバイス モデル名のカンマ区切りリストを受け取ります。最初の呼び出しでは NULL を使用して、必要なバッファー サイズを確認します。 |
| pcchActual | DWORD* | out | すべてのデバイス モデル名を取得するために実際に必要なバッファー サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cchDeviceModels に 0、wzDeviceModels に NULL を設定して呼び出すことで、カラー マネジメントのバージョン番号全体を取得するために必要なバッファー サイズを取得します。
この呼び出しにより、pcchActual に必要なバッファー サイズが設定されます。
必要なバッファー サイズが判明したら、cchDeviceModels にバッファー サイズを、wzDeviceModels に適切なサイズのバッファーを設定して 2 回目の GetDeviceModels を呼び出すことで、ピクセル形式を取得します。
コーデックに関連付けられた MIME タイプのカンマ区切りのシーケンスを取得します。
| cchMimeTypes | DWORD | in | MIME タイプ バッファーのサイズです。最初の呼び出しでは 0 を使用して、必要なバッファー サイズを確認します。 |
| wzMimeTypes | LPWSTR | inout | コーデックに関連付けられた MIME タイプを受け取ります。最初の呼び出しでは NULL を使用して、必要なバッファー サイズを確認します。 |
| pcchActual | DWORD* | out | コーデックに関連付けられたすべての MIME タイプを取得するために実際に必要なバッファー サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cchMimeTypes に 0、wzMimeTypes に NULL を設定して呼び出すことで、カラー マネジメントのバージョン番号全体を取得するために必要なバッファー サイズを取得します。
この呼び出しにより、pcchActual に必要なバッファー サイズが設定されます。
必要なバッファー サイズが判明したら、cchMimeTypes にバッファー サイズを、wzMimeTypes に適切なサイズのバッファーを設定して 2 回目の GetMimeTypes を呼び出すことで、ピクセル形式を取得します。
コーデックに関連付けられたファイル名拡張子のカンマ区切りリストを取得します。
| cchFileExtensions | DWORD | in | ファイル名拡張子バッファーのサイズです。最初の呼び出しでは 0 を使用して、必要なバッファー サイズを確認します。 |
| wzFileExtensions | LPWSTR | inout | コーデックに関連付けられたファイル名拡張子のカンマ区切りリストを受け取ります。最初の呼び出しでは NULL を使用して、必要なバッファー サイズを確認します。 |
| pcchActual | DWORD* | out | コーデックに関連付けられたすべてのファイル名拡張子を取得するために実際に必要なバッファー サイズです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
画像エンコーダーの既定の拡張子は、返される拡張子リストの最初の項目です。
このメソッドの使用パターンは 2 回の呼び出しから成ります。
1 回目の呼び出しでは、cchFileExtensions に 0、wzFileExtensions に NULL を設定して呼び出すことで、カラー マネジメントのバージョン番号全体を取得するために必要なバッファー サイズを取得します。
この呼び出しにより、pcchActual に必要なバッファー サイズが設定されます。
必要なバッファー サイズが判明したら、cchFileExtensions にバッファー サイズを、wzFileExtensions に適切なサイズのバッファーを設定して 2 回目の GetFileExtensions を呼び出すことで、ピクセル形式を取得します。
コーデックがアニメーションをサポートするかどうかを示す値を取得します。
| pfSupportAnimation | BOOL* | out | コーデックがタイミング情報を持つ画像をサポートする場合は TRUE を、それ以外の場合は FALSE を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
コーデックがクロマキーをサポートするかどうかを示す値を取得します。
| pfSupportChromakey | BOOL* | out | コーデックがクロマキーをサポートする場合は TRUE を、それ以外の場合は FALSE を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
コーデックが可逆形式をサポートするかどうかを示す値を取得します。
| pfSupportLossless | BOOL* | out | コーデックが可逆形式をサポートする場合は TRUE を、それ以外の場合は FALSE を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
コーデックがマルチフレーム画像をサポートするかどうかを示す値を取得します。
| pfSupportMultiframe | BOOL* | out | コーデックがマルチフレーム画像をサポートする場合は TRUE を、それ以外の場合は FALSE を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
指定された MIME タイプがコーデックの MIME タイプと一致するかどうかを示す値を取得します。
| wzMimeType | LPWSTR | in | 比較する MIME タイプです。 |
| pfMatches | BOOL* | out | MIME タイプが一致する場合は TRUE を、それ以外の場合は FALSE を受け取ります。 |
戻り値
解説(Remarks)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWICBitmapCodecInfo "{E87A44C4-B76E-4C47-8B09-298EB12A2714}" #usecom global IWICBitmapCodecInfo IID_IWICBitmapCodecInfo "{}" #comfunc global IWICBitmapCodecInfo_GetContainerFormat 11 var #comfunc global IWICBitmapCodecInfo_GetPixelFormats 12 int,var,var #comfunc global IWICBitmapCodecInfo_GetColorManagementVersion 13 int,var,var #comfunc global IWICBitmapCodecInfo_GetDeviceManufacturer 14 int,var,var #comfunc global IWICBitmapCodecInfo_GetDeviceModels 15 int,var,var #comfunc global IWICBitmapCodecInfo_GetMimeTypes 16 int,var,var #comfunc global IWICBitmapCodecInfo_GetFileExtensions 17 int,var,var #comfunc global IWICBitmapCodecInfo_DoesSupportAnimation 18 var #comfunc global IWICBitmapCodecInfo_DoesSupportChromakey 19 var #comfunc global IWICBitmapCodecInfo_DoesSupportLossless 20 var #comfunc global IWICBitmapCodecInfo_DoesSupportMultiframe 21 var #comfunc global IWICBitmapCodecInfo_MatchesMimeType 22 wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWICBitmapCodecInfo "{E87A44C4-B76E-4C47-8B09-298EB12A2714}" #usecom global IWICBitmapCodecInfo IID_IWICBitmapCodecInfo "{}" #comfunc global IWICBitmapCodecInfo_GetContainerFormat 11 sptr #comfunc global IWICBitmapCodecInfo_GetPixelFormats 12 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_GetColorManagementVersion 13 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_GetDeviceManufacturer 14 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_GetDeviceModels 15 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_GetMimeTypes 16 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_GetFileExtensions 17 int,sptr,sptr #comfunc global IWICBitmapCodecInfo_DoesSupportAnimation 18 sptr #comfunc global IWICBitmapCodecInfo_DoesSupportChromakey 19 sptr #comfunc global IWICBitmapCodecInfo_DoesSupportLossless 20 sptr #comfunc global IWICBitmapCodecInfo_DoesSupportMultiframe 21 sptr #comfunc global IWICBitmapCodecInfo_MatchesMimeType 22 wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。