Win32 API 日本語リファレンス
ホームUI.Shell › IShellImageDataFactory

IShellImageDataFactory

COM
IID9be8ed5c-edab-4d75-90f3-bd5bdbb21c82継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

さまざまな画像ソースに基づいて IShellImageData インスタンスを作成するメソッドを公開します。

解説(Remarks)

このインターフェイスは、以降のバージョンの Windows では利用できない見込みです。IShellImageDataFactory のメソッドの代わりに、Windows GDI+ API を使用することが推奨されます。

このインターフェイスは、Windows Vista より前の公開ヘッダーファイルには含まれていませんでした。

メソッド 4

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

vtbl 3 HRESULT CreateIShellImageData(IShellImageData** ppshimg)

IShellImageData インターフェイスのインスタンスを作成します。

ppshimgIShellImageData**outIShellImageData のインスタンスへのポインターのアドレス。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。

戻り値 説明
E_OUTOFMEMORY
内部オブジェクトをインスタンス化できません。
E_NOINTERFACE
内部オブジェクトが IShellImageData をサポートしていません。
E_POINTER
ppshimg パラメーターが NULL です。
vtbl 4 HRESULT CreateImageFromFile(LPWSTR pszPath, IShellImageData** ppshimg)

指定されたファイルに基づいて IShellImageData インターフェイスのインスタンスを作成します。

pszPathLPWSTRin画像を含むファイルのパス。このパラメーターが NULL の場合、処理されない例外が発生します。
ppshimgIShellImageData**outIShellImageData のインスタンスへのポインターのアドレス。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。

戻り値 説明
E_OUTOFMEMORY
内部オブジェクトをインスタンス化できません。
E_NOINTERFACE
内部オブジェクトが IShellImageData インターフェイスまたは IPersistFile インターフェイスをサポートしていません。
E_POINTER
ppshimg パラメーターが NULL です。

解説(Remarks)

pszPathNULL の場合、アクセス違反が発生します。

vtbl 5 HRESULT CreateImageFromStream(IStream* pStream, IShellImageData** ppshimg)

指定されたファイルストリームに基づいて IShellImageData インターフェイスのインスタンスを作成します。

pStreamIStream*inoptional画像ストリームへのポインター。
ppshimgIShellImageData**outIShellImageData のインスタンスへのポインターのアドレス。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。

戻り値 説明
E_OUTOFMEMORY
内部オブジェクトをインスタンス化できません。
E_NOINTERFACE
内部オブジェクトが IShellImageData インターフェイスまたは IPersistFile インターフェイスをサポートしていません。
E_POINTER
ppshimg パラメーターが NULL です。

解説(Remarks)

pStreamNULL または無効なポインターの場合、後続の Decode の呼び出しでアクセス違反が発生します。

vtbl 6 HRESULT GetDataFormatFromPath(LPWSTR pszPath, GUID* pDataFormat)

拡張子に基づいてファイルの形式を判別します。

pszPathLPWSTRinファイルへのパス。
pDataFormatGUID*outファイルの画像形式を識別する GUID へのポインター。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。

戻り値 説明
E_FAIL
pszPath パラメーターが NULL であるか、ファイル名の拡張子が定義済みのいずれの GDI+ デコーダーにも対応していないか、または内部エラーが発生しました。これらのいずれの場合も、pDataFormat は GUID_NULL に設定されます。
E_OUTOFMEMORY
内部オブジェクトをインスタンス化できません。

解説(Remarks)

IShellImageDataFactory::GetDataFormatFromPath は、現在のシステムで特定の形式にデータを保存できるかどうかを判別するためにのみ使用してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IShellImageDataFactory "{9BE8ED5C-EDAB-4D75-90F3-BD5BDBB21C82}"
#usecom global IShellImageDataFactory IID_IShellImageDataFactory "{66E4E4FB-F385-4DD0-8D74-A2EFD1BC6178}"
#comfunc global IShellImageDataFactory_CreateIShellImageData  3 sptr
#comfunc global IShellImageDataFactory_CreateImageFromFile    4 wstr,sptr
#comfunc global IShellImageDataFactory_CreateImageFromStream  5 sptr,sptr
#comfunc global IShellImageDataFactory_GetDataFormatFromPath  6 wstr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。