Win32 API 日本語リファレンス
ホームSystem.WinRT › IInspectable

IInspectable

COM
IIDaf86e2e0-b12d-4c6a-9c5a-d7aa65101e90継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

すべての Windows ランタイム クラスに必要な機能を提供します。

解説(Remarks)

IInspectable のメソッドは COM アパートメントに影響を与えないため、ユーザー インターフェイス スレッドから安全に呼び出せます。

メソッド 3

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

vtbl 3 HRESULT GetIids(DWORD* iidCount, GUID** iids)

現在の Windows ランタイム クラスが実装しているインターフェイスを取得します。

iidCountDWORD*out現在の Windows ランタイム オブジェクトが実装しているインターフェイスの数。IUnknownIInspectable の実装は含みません。
iidsGUID**out現在の Windows ランタイム オブジェクトが実装している各インターフェイスの IID を格納する配列へのポインター。IUnknown インターフェイスと IInspectable インターフェイスは除外されます。

戻り値

型: HRESULT

この関数は次の値を返すことがあります。

戻り値 説明
S_OK
IID の配列が正常に割り当てられ、iids に格納されました。
E_OUTOFMEMORY
iids の割り当てに失敗しました。

解説(Remarks)

Windows ランタイム オブジェクトが実装しているインターフェイスを調べるには、GetIids メソッドを使用します。

iids 配列に含まれるいずれの IID に対する QueryInterface の呼び出しも成功しなければなりません。

IID 配列の解放は呼び出し元の責任であり、CoTaskMemFree 関数を使用して解放します。

vtbl 4 HRESULT GetRuntimeClassName(HSTRING* className)

現在の Windows ランタイム オブジェクトの完全修飾名を取得します。

classNameHSTRING*out現在の Windows ランタイム オブジェクトの完全修飾名。

戻り値

型: HRESULT

この関数は次の値を返すことがあります。

戻り値 説明
S_OK
className 文字列が正常に作成されました。
E_OUTOFMEMORY
className 文字列の割り当てに失敗しました。
E_ILLEGAL_METHOD_CALL
className がクラス ファクトリまたは静的インターフェイスを指しています。

解説(Remarks)

Windows ランタイム オブジェクトの名前空間で修飾された名前を取得するには、GetRuntimeClassName メソッドを使用します。

className 文字列の解放は呼び出し元の責任であり、WindowsDeleteString 関数を使用して解放します。

次の表は、GetRuntimeClassName メソッドが返すクラス名文字列の例を示しています。

クラス名の例 説明
Fabrikam.Kitchen.IToaster Fabrikam.Kitchen 名前空間内のインターフェイス。
Fabrikam.Kitchen.Chef Fabrikam.Kitchen 名前空間内のクラス。
Windows.Foundation.Collections.IVector`1<TailspinToys.IStore> TailspinToys.IStore インターフェイスのベクター。
Windows.Foundation.Collections.IVector`1<Windows.Foundation.Collections.IMap`2<String, TailspinToys.IStore>> 文字列から TailspinToys.IStore インターフェイスへのマップのベクター。

GetRuntimeClassName メソッドは、サーバー オブジェクトが実装を保証する中で最も具体的な型情報を提供します。型名は、ランタイムクラス名、インターフェイス グループ名、インターフェイス名、またはパラメーター化インターフェイス名のいずれかになります。

クラス名がクラス ファクトリまたは静的インターフェイスを指す場合、GetRuntimeClassName メソッドは E_ILLEGAL_METHOD_CALL を返します。

vtbl 5 HRESULT GetTrustLevel(TrustLevel* trustLevel)

現在の Windows ランタイム オブジェクトの信頼レベルを取得します。

trustLevelTrustLevel*out現在の Windows ランタイム オブジェクトの信頼レベル。既定値は BaseLevel です。

戻り値

型: HRESULT

このメソッドは常に S_OK を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IInspectable "{AF86E2E0-B12D-4C6A-9C5A-D7AA65101E90}"
#usecom global IInspectable IID_IInspectable "{}"
#comfunc global IInspectable_GetIids              3 var,var
#comfunc global IInspectable_GetRuntimeClassName  4 sptr
#comfunc global IInspectable_GetTrustLevel        5 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。