IInspectable
COM公式ドキュメント
すべての Windows ランタイム クラスに必要な機能を提供します。
解説(Remarks)
IInspectable のメソッドは COM アパートメントに影響を与えないため、ユーザー インターフェイス スレッドから安全に呼び出せます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
現在の Windows ランタイム クラスが実装しているインターフェイスを取得します。
| iidCount | DWORD* | out | 現在の Windows ランタイム オブジェクトが実装しているインターフェイスの数。IUnknown と IInspectable の実装は含みません。 |
| iids | GUID** | out | 現在の Windows ランタイム オブジェクトが実装している各インターフェイスの IID を格納する配列へのポインター。IUnknown インターフェイスと IInspectable インターフェイスは除外されます。 |
戻り値
型: HRESULT
この関数は次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| IID の配列が正常に割り当てられ、iids に格納されました。 | |
| iids の割り当てに失敗しました。 |
解説(Remarks)
Windows ランタイム オブジェクトが実装しているインターフェイスを調べるには、GetIids メソッドを使用します。
iids 配列に含まれるいずれの IID に対する QueryInterface の呼び出しも成功しなければなりません。
IID 配列の解放は呼び出し元の責任であり、CoTaskMemFree 関数を使用して解放します。
現在の Windows ランタイム オブジェクトの完全修飾名を取得します。
| className | HSTRING* | out | 現在の Windows ランタイム オブジェクトの完全修飾名。 |
戻り値
型: HRESULT
この関数は次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| className 文字列が正常に作成されました。 | |
| className 文字列の割り当てに失敗しました。 | |
| 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 を返します。
現在の Windows ランタイム オブジェクトの信頼レベルを取得します。
| trustLevel | TrustLevel* | out | 現在の Windows ランタイム オブジェクトの信頼レベル。既定値は BaseLevel です。 |
戻り値
型: HRESULT
このメソッドは常に S_OK を返します。
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 指定が可能。#define global IID_IInspectable "{AF86E2E0-B12D-4C6A-9C5A-D7AA65101E90}" #usecom global IInspectable IID_IInspectable "{}" #comfunc global IInspectable_GetIids 3 sptr,sptr #comfunc global IInspectable_GetRuntimeClassName 4 sptr #comfunc global IInspectable_GetTrustLevel 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。