IShellImageDataFactory
COM公式ドキュメント
さまざまな画像ソースに基づいて IShellImageData インスタンスを作成するメソッドを公開します。
解説(Remarks)
このインターフェイスは、以降のバージョンの Windows では利用できない見込みです。IShellImageDataFactory のメソッドの代わりに、Windows GDI+ API を使用することが推奨されます。
このインターフェイスは、Windows Vista より前の公開ヘッダーファイルには含まれていませんでした。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IShellImageData インターフェイスのインスタンスを作成します。
| ppshimg | IShellImageData** | out | IShellImageData のインスタンスへのポインターのアドレス。 |
戻り値
型: HRESULT
成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| 内部オブジェクトをインスタンス化できません。 | |
| 内部オブジェクトが IShellImageData をサポートしていません。 | |
| ppshimg パラメーターが NULL です。 |
指定されたファイルに基づいて IShellImageData インターフェイスのインスタンスを作成します。
| pszPath | LPWSTR | in | 画像を含むファイルのパス。このパラメーターが NULL の場合、処理されない例外が発生します。 |
| ppshimg | IShellImageData** | out | IShellImageData のインスタンスへのポインターのアドレス。 |
戻り値
型: HRESULT
成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| 内部オブジェクトをインスタンス化できません。 | |
| 内部オブジェクトが IShellImageData インターフェイスまたは IPersistFile インターフェイスをサポートしていません。 | |
| ppshimg パラメーターが NULL です。 |
解説(Remarks)
pszPath が NULL の場合、アクセス違反が発生します。
指定されたファイルストリームに基づいて IShellImageData インターフェイスのインスタンスを作成します。
| pStream | IStream* | inoptional | 画像ストリームへのポインター。 |
| ppshimg | IShellImageData** | out | IShellImageData のインスタンスへのポインターのアドレス。 |
戻り値
型: HRESULT
成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| 内部オブジェクトをインスタンス化できません。 | |
| 内部オブジェクトが IShellImageData インターフェイスまたは IPersistFile インターフェイスをサポートしていません。 | |
| ppshimg パラメーターが NULL です。 |
解説(Remarks)
pStream が NULL または無効なポインターの場合、後続の Decode の呼び出しでアクセス違反が発生します。
拡張子に基づいてファイルの形式を判別します。
| pszPath | LPWSTR | in | ファイルへのパス。 |
| pDataFormat | GUID* | out | ファイルの画像形式を識別する GUID へのポインター。 |
戻り値
型: HRESULT
成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| pszPath パラメーターが NULL であるか、ファイル名の拡張子が定義済みのいずれの GDI+ デコーダーにも対応していないか、または内部エラーが発生しました。これらのいずれの場合も、pDataFormat は GUID_NULL に設定されます。 | |
| 内部オブジェクトをインスタンス化できません。 |
解説(Remarks)
IShellImageDataFactory::GetDataFormatFromPath は、現在のシステムで特定の形式にデータを保存できるかどうかを判別するためにのみ使用してください。
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 指定が可能。#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,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。