ITypeInfo
COM公式ドキュメント
オブジェクトに関する情報を読み取るために使用します。(ITypeInfo)
解説(Remarks)
型情報インターフェイスは、アプリケーションの内部で使用される部分ではなく、外部のクライアントから呼び出せる部分を記述することを目的としています。
ITypeInfo インターフェイスは、次の情報へのアクセスを提供します。
- 型に関連付けられた関数記述の集合。インターフェイスの場合、これはインターフェイス内のメンバー関数の集合を含みます。
- 型に関連付けられたデータメンバー記述の集合。構造体の場合、これは型のフィールドの集合を含みます。
- 構造体を記述するかインターフェイスを記述するかなど、型の一般的な属性。
ITypeInfo のインスタンスは、オブジェクトの型に関するさまざまな情報を提供し、複数の用途で使用されます。コンパイラーは ITypeInfo を使用して、型のメンバーへの参照をコンパイルできます。型インターフェイスブラウザーは、これを使用して型の各メンバーに関する情報を検索できます。IDispatch の実装者は、これを使用して IDispatch の呼び出しをインターフェイスへ自動的に委譲する仕組みを提供できます。
メソッド 19
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
型記述の属性を格納する TYPEATTR 構造体を取得します。
| ppTypeAttr | TYPEATTR** | out | この型記述の属性。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
TYPEATTR 構造体を解放するには、ITypeInfo::ReleaseTypeAttr を使用します。
型記述の ITypeComp インターフェイスを取得します。これにより、クライアントコンパイラーは型記述のメンバーにバインドできます。
| ppTComp | ITypeComp** | out | 含まれている型ライブラリの ITypeComp。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
クライアントコンパイラーは、ITypeComp インターフェイスを使用して、型のメンバーにバインドできます。
指定された関数に関する情報を格納する FUNCDESC 構造体を取得します。
| index | DWORD | in | 記述を返す関数のインデックス。index は 0 からこの型の関数の数より 1 少ない値までの範囲でなければなりません。 |
| ppFuncDesc | FUNCDESC** | out | 指定された関数を記述する FUNCDESC 構造体。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
ITypeInfo::GetFuncDesc 関数は、指定された index の関数を記述する FUNCDESC 構造体へのアクセスを提供します。FUNCDESC 構造体は ITypeInfo::ReleaseFuncDesc で解放する必要があります。型内の関数の数は、TYPEATTR 構造体に含まれる属性の 1 つです。
例
次の例では、CHECKRESULT 関数は未定義です。この関数を、独自のエラー処理コードに置き換えてください。
CHECKRESULT(ptypeinfo->GetFuncDesc(i, &pfuncdesc));
idMember = pfuncdesc->memid;
CHECKRESULT(ptypeinfo->GetDocumentation(idMember, &bstrName, NULL, NULL, NULL));
ptypeinfo->ReleaseFuncDesc(pfuncdesc);
指定された変数を記述する VARDESC 構造体を取得します。
| index | DWORD | in | 記述を返す変数のインデックス。インデックスは 0 からこの型の変数の数より 1 少ない値までの範囲でなければなりません。 |
| ppVarDesc | VARDESC** | out | 指定された変数を記述する VARDESC。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
VARDESC 構造体を解放するには、ReleaseVarDesc を使用します。
例
次の例では、CHECKRESULT 関数は未定義です。この関数を、独自のエラー処理コードに置き換えてください。
CHECKRESULT(ptypeinfo->GetVarDesc(i, &pvardesc));
idMember = pvardesc->memid;
CHECKRESULT(ptypeinfo->GetDocumentation(idMember, &bstrName, NULL, NULL,
NULL));
ptypeinfo->ReleaseVarDesc(pvardesc);
指定されたメンバー ID を持つ変数、または指定された関数 ID に対応するプロパティやメソッドの名前とパラメーターを取得します。
| memid | INT | in | 名前 (または複数の名前) を返すメンバーの ID。 |
| rgBstrNames | LPWSTR* | out | 呼び出し元が割り当てた配列。戻り値では、各要素にメンバーに関連付けられた名前 (または複数の名前) が格納されます。 |
| cMaxNames | DWORD | in | 渡された rgBstrNames 配列の長さ。 |
| pcNames | DWORD* | out | rgBstrNames 配列内の名前の数。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
呼び出し元は、返された BSTR 配列を解放する必要があります。
メンバー ID がプロパティ関数で実装されたプロパティを識別する場合、プロパティ名が返されます。プロパティの get 関数の場合、関数名とそのパラメーターの名前が常に返されます。
プロパティの put 関数および put reference 関数の場合、代入の右辺には名前がありません。cMaxNames が関数のパラメーターのすべての名前を返すために必要な数より少ない場合、最初の cMaxNames - 1 個のパラメーターの名前のみが返されます。パラメーターの名前は、インターフェイス内の他の場所で現れるのと同じ順序 (たとえば、FUNCDESC 列挙に関連付けられたパラメーター配列と同じ順序) で配列に返されます。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
型記述が COM クラスを記述している場合、実装されているインターフェイス型の型記述を取得します。
| index | DWORD | in | ハンドルを返す、実装されている型のインデックス。有効な範囲は 0 から TYPEATTR 構造体の cImplTypes フィールドまでです。 |
| pRefType | DWORD* | out | 実装されているインターフェイス (存在する場合) のハンドル。このハンドルは ITypeInfo::GetRefTypeInfo に渡して、型記述を取得できます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 渡されたインデックスが、0 から実装されているインターフェイスの数より 1 少ない値までの範囲外です。 |
解説(Remarks)
TKIND_DISPATCH 型記述がデュアルインターフェイスのものである場合、GetRefTypeOfImplType を index に –1 を指定して呼び出し、返された pRefTypehandle を GetRefTypeInfo に渡して型情報を取得することで、TKIND_INTERFACE 型記述を取得できます。
型記述内の、実装されている 1 つのインターフェイスまたは基底インターフェイスに対する IMPLTYPEFLAGS 列挙を取得します。
| index | DWORD | in | フラグを取得する、実装されているインターフェイスまたは基底インターフェイスのインデックス。 |
| pImplTypeFlags | IMPLTYPEFLAGS* | out | IMPLTYPEFLAGS 列挙値。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
これらのフラグは、継承という行為に関連付けられており、継承されるインターフェイスそのものに関連付けられているわけではありません。
メンバー名とメンバー ID の間、およびパラメーター名とパラメーター ID の間のマッピングを行います。
| rgszNames | LPWSTR* | in | マッピングする名前の配列。 |
| cNames | DWORD | in | マッピングする名前の数。 |
| pMemId | INT* | out | 名前のマッピングが格納される、呼び出し元が割り当てた配列。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
GetIDsOfNames 関数は、メンバーの名前 (rgszNames[0]) とそのパラメーター (rgszNames[1] ...rgszNames[cNames- 1]) を、メンバーの ID (pMemId[0]) および指定されたパラメーターの ID (pMemId[1] ... pMemId[cNames- 1]) にマッピングします。パラメーターの ID は、メンバー関数の引数リスト内の最初のパラメーターが 0、2 番目が 1、というように割り当てられます。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
型記述で記述されるインターフェイスを実装するオブジェクトのメソッドを呼び出すか、そのプロパティにアクセスします。
| pvInstance | void* | in | この型記述で記述されるインターフェイスのインスタンス。 | ||||||||||
| memid | INT | in | インターフェイスのメンバー。 | ||||||||||
| wFlags | DISPATCH_FLAGS | in | invoke 呼び出しのコンテキストを記述するフラグ。
| ||||||||||
| pDispParams | DISPPARAMS* | inout | 引数の配列、名前付き引数の DISPID の配列、および各配列内の要素数のカウント。 | ||||||||||
| pVarResult | VARIANT* | out | 結果。呼び出し元がいかなる結果も期待しない場合は null にする必要があります。wFlags が DISPATCH_PROPERTYPUT または DISPATCH_PROPERTYPUTREF を指定している場合、pVarResultis は無視されます。 | ||||||||||
| pExcepInfo | EXCEPINFO* | out | 例外情報構造体。DISP_E_EXCEPTION が返された場合にのみ設定されます。pExcepInfo が入力時に null の場合、HRESULT エラーのみが返されます。 | ||||||||||
| puArgErr | DWORD* | out | Invoke が DISP_E_TYPEMISMATCH を返す場合、puArgErr は型が正しくない引数の (rgvarg 内での) インデックスを示します。複数の引数がエラーを返す場合、puArgErr はエラーのある最初の引数のみを示します。pDispParams->rgvarg 内の引数は逆順で現れるため、最初の引数は配列内で最も高いインデックスを持つものになります。このパラメーターを null にすることはできません。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 呼び出されたメンバーがエラーの HRESULT を返しました。メンバーが IErrorInfo を実装している場合、詳細はエラーオブジェクトで参照できます。それ以外の場合、詳細は pExcepInfo パラメーターに格納されます。 |
IDispatch::Invoke のいずれのエラーも返される可能性があります。
解説(Remarks)
ITypeInfo::Invoke 関数を使用して、オブジェクトのメンバーにアクセスするか、この型記述で記述されるインターフェイスを実装するメソッドを呼び出します。IDispatch インターフェイスをサポートするオブジェクトの場合、Invoke を使用して IDispatch::Invoke を実装できます。
ITypeInfo::Invoke は、クラスのインスタンスへのポインターを受け取ります。それ以外の点では、そのパラメーターは IDispatch::Invoke と同じですが、ITypeInfo::Invoke では refiid パラメーターと lcid パラメーターが省略されます。呼び出されると、ITypeInfo::Invoke は、指定されたインスタンスに対して IDispatch::Invoke のパラメーターで記述された処理を実行します。
VTBL インターフェイスメンバーの場合、ITypeInfo::Invoke は、lcid 属性が付いたパラメーターに型情報の LCID を渡し、retval 属性に戻り値を渡します。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために基底の型記述に対して再帰的に処理を行います。
指定された型記述に対する、ドキュメント文字列、完全なヘルプファイル名およびパス、ならびにヘルプトピックのコンテキスト ID を取得します。
| memid | INT | in | ドキュメントを返すメンバーの ID。 |
| pBstrName | LPWSTR* | outoptional | 指定された項目の名前。呼び出し元が項目名を必要としない場合、pBstrName は null にできます。 |
| pBstrDocString | LPWSTR* | outoptional | 指定された項目のドキュメント文字列。呼び出し元がドキュメント文字列を必要としない場合、pBstrDocString は null にできます。 |
| pdwHelpContext | DWORD* | out | ヘルプのローカライズコンテキスト。呼び出し元がヘルプコンテキストを必要としない場合、null にできます。 |
| pBstrHelpFile | LPWSTR* | outoptional | ヘルプファイルに使用される DLL を含むファイルの完全修飾名。呼び出し元がファイル名を必要としない場合、null にできます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
GetDocumentation 関数は、memid パラメーターで指定されたメンバーのドキュメントへのアクセスを提供します。渡された memid が MEMBERID_NIL の場合、型記述のドキュメントが返されます。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
呼び出し元は、pBstrName、pBstrDocString、pBstrHelpFile が参照する BSTR を解放するために SysFreeString を使用する必要があります。
DLL 内の関数のエントリポイントの記述または仕様を取得します。
| memid | INT | in | DLL エントリ記述を返すメンバー関数の ID。 |
| invKind | INVOKEKIND | in | memid で識別されるメンバーの種類。1 つの memid が最大 3 つの個別の関数を識別できるため、プロパティにとって重要です。 |
| pBstrDllName | LPWSTR* | outoptional | null でない場合、この関数は pBstrDllName に DLL の名前を設定します。 |
| pBstrName | LPWSTR* | outoptional | null でない場合、この関数は pBstrName にエントリポイントの名前を設定します。エントリポイントが序数で指定されている場合、この引数は null になります。 |
| pwOrdinal | WORD* | out | null でなく、かつ関数が序数で定義されている場合、この関数は pwOrdinal にその序数を設定します。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
呼び出し元は、エントリ記述を取得したいメンバー関数を表すメンバー ID を渡します。関数に DLL エントリポイントがある場合、その関数を含む DLL の名前と、その名前または序数識別子が、呼び出し元によって割り当てられた渡されたポインターに格納されます。関数に DLL エントリポイントがない場合、エラーが返されます。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
呼び出し元は、pBstrName と pBstrDllName が参照する BSTR を解放するために SysFreeString を使用する必要があります。
型記述が他の型記述を参照している場合、参照されている型記述を取得します。
| hRefType | DWORD | in | 返す、参照されている型記述へのハンドル。 |
| ppTInfo | ITypeInfo** | out | 参照されている型記述。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
戻り値では、2 番目のパラメーターに、この型記述から参照されている型記述へのポインターへのポインターが格納されます。型記述は、その変数、関数のパラメーター、または関数の戻り値の型として現れる各型記述への参照を持たなければなりません。たとえば、データメンバーの型がレコード型である場合、そのデータメンバーの型記述には、参照されている型記述の hRefType が含まれます。型記述へのポインターを取得するには、この参照を GetRefTypeInfo に渡します。
DLL 内で定義されているような、静的関数または静的変数のアドレスを取得します。
| memid | INT | in | アドレスを取得する静的メンバーのメンバー ID。メンバー ID は DISPID によって定義されます。 |
| invKind | INVOKEKIND | in | メンバーがプロパティかどうか、そうであればどの種類かを示します。 |
| ppv | void** | out | 静的メンバー。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
これらのアドレスは、呼び出し元が型記述への参照を解放するまで有効です。invKind パラメーターは、プロパティ関数のアドレスが要求されている場合を除いて無視できます。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
コンポーネントオブジェクトクラス (coclass) を記述する型の新しいインスタンスを作成します。
| pUnkOuter | IUnknown* | in | 制御を行う IUnknown。Null の場合、スタンドアロンのインスタンスが作成されます。有効な場合、集約オブジェクトが作成されます。 |
| riid | GUID* | in | 呼び出し元が、結果として得られるオブジェクトと通信するために使用するインターフェイスの ID。 |
| ppvObj | void** | out | 作成されたオブジェクトのインスタンス。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 | |
| OLE は、1 つ以上の必要なインターフェイスの実装を見つけられませんでした。 |
GetActiveObject または CoCreateInstance から追加のエラーが返される場合があります。
解説(Remarks)
コンポーネントオブジェクトクラス (coclass) を記述する型の場合、CreateInstance はクラスの新しいインスタンスを作成します。通常、CreateInstance は型記述の GUID を指定して CoCreateInstance を呼び出します。Application オブジェクトの場合、まず GetActiveObject を呼び出します。アプリケーションがアクティブな場合、GetActiveObject はアクティブなオブジェクトを返します。それ以外の場合、GetActiveObject が失敗すると、CreateInstance は CoCreateInstance を呼び出します。
マーシャリング情報を取得します。
| memid | INT | in | どのマーシャリング情報が必要かを示すメンバー ID。 |
| pBstrMops | LPWSTR* | out | 参照されている型記述で記述される構造体のフィールドをマーシャリングする際に使用されるオペコード文字列。返す情報がない場合は null。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
渡されたメンバー ID が MEMBERID_NIL の場合、この関数は、型記述で記述される構造体のフィールドをマーシャリングするためのオペコード文字列を返します。それ以外の場合、インデックスで指定された関数をマーシャリングするためのオペコード文字列を返します。
型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。
含まれている型ライブラリと、その型ライブラリ内における型記述のインデックスを取得します。
| ppTLib | ITypeLib** | out | 含まれている型ライブラリ。 |
| pIndex | DWORD* | out | 含まれている型ライブラリ内における型記述のインデックス。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が無効です。 | |
| 操作を完了するためのメモリが不足しています。 | |
| OLE は、1 つ以上の必要なインターフェイスの実装を見つけられませんでした。 |
ITypeInfo::GetTypeAttr で以前に返された TYPEATTR を解放します。
| pTypeAttr | TYPEATTR* | in | 解放する TYPEATTR。 |
ITypeInfo::GetFuncDesc で以前に返された FUNCDESC を解放します。
| pFuncDesc | FUNCDESC* | in | 解放する FUNCDESC。 |
ITypeInfo::GetVarDesc で以前に返された VARDESC を解放します。
| pVarDesc | VARDESC* | in | 解放する VARDESC。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITypeInfo "{00020401-0000-0000-C000-000000000046}" #usecom global ITypeInfo IID_ITypeInfo "{}" #comfunc global ITypeInfo_GetTypeAttr 3 var #comfunc global ITypeInfo_GetTypeComp 4 sptr #comfunc global ITypeInfo_GetFuncDesc 5 int,var #comfunc global ITypeInfo_GetVarDesc 6 int,var #comfunc global ITypeInfo_GetNames 7 int,var,int,var #comfunc global ITypeInfo_GetRefTypeOfImplType 8 int,var #comfunc global ITypeInfo_GetImplTypeFlags 9 int,var #comfunc global ITypeInfo_GetIDsOfNames 10 var,int,var #comfunc global ITypeInfo_Invoke 11 sptr,int,int,var,var,var,var #comfunc global ITypeInfo_GetDocumentation 12 int,var,var,var,var #comfunc global ITypeInfo_GetDllEntry 13 int,int,var,var,var #comfunc global ITypeInfo_GetRefTypeInfo 14 int,sptr #comfunc global ITypeInfo_AddressOfMember 15 int,int,sptr #comfunc global ITypeInfo_CreateInstance 16 sptr,var,sptr #comfunc global ITypeInfo_GetMops 17 int,var #comfunc global ITypeInfo_GetContainingTypeLib 18 sptr,var #comfunc global ITypeInfo_ReleaseTypeAttr 19 var #comfunc global ITypeInfo_ReleaseFuncDesc 20 var #comfunc global ITypeInfo_ReleaseVarDesc 21 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ITypeInfo "{00020401-0000-0000-C000-000000000046}" #usecom global ITypeInfo IID_ITypeInfo "{}" #comfunc global ITypeInfo_GetTypeAttr 3 sptr #comfunc global ITypeInfo_GetTypeComp 4 sptr #comfunc global ITypeInfo_GetFuncDesc 5 int,sptr #comfunc global ITypeInfo_GetVarDesc 6 int,sptr #comfunc global ITypeInfo_GetNames 7 int,sptr,int,sptr #comfunc global ITypeInfo_GetRefTypeOfImplType 8 int,sptr #comfunc global ITypeInfo_GetImplTypeFlags 9 int,sptr #comfunc global ITypeInfo_GetIDsOfNames 10 sptr,int,sptr #comfunc global ITypeInfo_Invoke 11 sptr,int,int,sptr,sptr,sptr,sptr #comfunc global ITypeInfo_GetDocumentation 12 int,sptr,sptr,sptr,sptr #comfunc global ITypeInfo_GetDllEntry 13 int,int,sptr,sptr,sptr #comfunc global ITypeInfo_GetRefTypeInfo 14 int,sptr #comfunc global ITypeInfo_AddressOfMember 15 int,int,sptr #comfunc global ITypeInfo_CreateInstance 16 sptr,sptr,sptr #comfunc global ITypeInfo_GetMops 17 int,sptr #comfunc global ITypeInfo_GetContainingTypeLib 18 sptr,sptr #comfunc global ITypeInfo_ReleaseTypeAttr 19 sptr #comfunc global ITypeInfo_ReleaseFuncDesc 20 sptr #comfunc global ITypeInfo_ReleaseVarDesc 21 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。