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

ITypeInfo

COM
IID00020401-0000-0000-c000-000000000046継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

オブジェクトに関する情報を読み取るために使用します。(ITypeInfo)

解説(Remarks)

型情報インターフェイスは、アプリケーションの内部で使用される部分ではなく、外部のクライアントから呼び出せる部分を記述することを目的としています。

ITypeInfo インターフェイスは、次の情報へのアクセスを提供します。

IDispatch インターフェイスの型記述は、インターフェイスを実装するために使用できます。詳細については、Dispatch Interface and API Functions における CreateStdDispatch の説明を参照してください。

ITypeInfo のインスタンスは、オブジェクトの型に関するさまざまな情報を提供し、複数の用途で使用されます。コンパイラーは ITypeInfo を使用して、型のメンバーへの参照をコンパイルできます。型インターフェイスブラウザーは、これを使用して型の各メンバーに関する情報を検索できます。IDispatch の実装者は、これを使用して IDispatch の呼び出しをインターフェイスへ自動的に委譲する仕組みを提供できます。

メソッド 19

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

vtbl 3 HRESULT GetTypeAttr(TYPEATTR** ppTypeAttr)

型記述の属性を格納する TYPEATTR 構造体を取得します。

ppTypeAttrTYPEATTR**outこの型記述の属性。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

TYPEATTR 構造体を解放するには、ITypeInfo::ReleaseTypeAttr を使用します。

vtbl 4 HRESULT GetTypeComp(ITypeComp** ppTComp)

型記述の ITypeComp インターフェイスを取得します。これにより、クライアントコンパイラーは型記述のメンバーにバインドできます。

ppTCompITypeComp**out含まれている型ライブラリの ITypeComp

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

クライアントコンパイラーは、ITypeComp インターフェイスを使用して、型のメンバーにバインドできます。

vtbl 5 HRESULT GetFuncDesc(DWORD index, FUNCDESC** ppFuncDesc)

指定された関数に関する情報を格納する FUNCDESC 構造体を取得します。

indexDWORDin記述を返す関数のインデックス。index は 0 からこの型の関数の数より 1 少ない値までの範囲でなければなりません。
ppFuncDescFUNCDESC**out指定された関数を記述する FUNCDESC 構造体。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(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);
vtbl 6 HRESULT GetVarDesc(DWORD index, VARDESC** ppVarDesc)

指定された変数を記述する VARDESC 構造体を取得します。

indexDWORDin記述を返す変数のインデックス。インデックスは 0 からこの型の変数の数より 1 少ない値までの範囲でなければなりません。
ppVarDescVARDESC**out指定された変数を記述する VARDESC。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

VARDESC 構造体を解放するには、ReleaseVarDesc を使用します。

次の例では、CHECKRESULT 関数は未定義です。この関数を、独自のエラー処理コードに置き換えてください。

CHECKRESULT(ptypeinfo->GetVarDesc(i, &pvardesc));
idMember = pvardesc->memid;
CHECKRESULT(ptypeinfo->GetDocumentation(idMember, &bstrName, NULL, NULL, 
      NULL));
ptypeinfo->ReleaseVarDesc(pvardesc);
vtbl 7 HRESULT GetNames(INT memid, LPWSTR* rgBstrNames, DWORD cMaxNames, DWORD* pcNames)

指定されたメンバー ID を持つ変数、または指定された関数 ID に対応するプロパティやメソッドの名前とパラメーターを取得します。

memidINTin名前 (または複数の名前) を返すメンバーの ID。
rgBstrNamesLPWSTR*out呼び出し元が割り当てた配列。戻り値では、各要素にメンバーに関連付けられた名前 (または複数の名前) が格納されます。
cMaxNamesDWORDin渡された rgBstrNames 配列の長さ。
pcNamesDWORD*outrgBstrNames 配列内の名前の数。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

呼び出し元は、返された BSTR 配列を解放する必要があります。

メンバー ID がプロパティ関数で実装されたプロパティを識別する場合、プロパティ名が返されます。プロパティの get 関数の場合、関数名とそのパラメーターの名前が常に返されます。

プロパティの put 関数および put reference 関数の場合、代入の右辺には名前がありません。cMaxNames が関数のパラメーターのすべての名前を返すために必要な数より少ない場合、最初の cMaxNames - 1 個のパラメーターの名前のみが返されます。パラメーターの名前は、インターフェイス内の他の場所で現れるのと同じ順序 (たとえば、FUNCDESC 列挙に関連付けられたパラメーター配列と同じ順序) で配列に返されます。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

vtbl 8 HRESULT GetRefTypeOfImplType(DWORD index, DWORD* pRefType)

型記述が COM クラスを記述している場合、実装されているインターフェイス型の型記述を取得します。

indexDWORDinハンドルを返す、実装されている型のインデックス。有効な範囲は 0 から TYPEATTR 構造体の cImplTypes フィールドまでです。
pRefTypeDWORD*out実装されているインターフェイス (存在する場合) のハンドル。このハンドルは ITypeInfo::GetRefTypeInfo に渡して、型記述を取得できます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
TYPE_E_ELEMENTNOTFOUND
渡されたインデックスが、0 から実装されているインターフェイスの数より 1 少ない値までの範囲外です。

解説(Remarks)

TKIND_DISPATCH 型記述がデュアルインターフェイスのものである場合、GetRefTypeOfImplTypeindex に –1 を指定して呼び出し、返された pRefTypehandleGetRefTypeInfo に渡して型情報を取得することで、TKIND_INTERFACE 型記述を取得できます。

vtbl 9 HRESULT GetImplTypeFlags(DWORD index, IMPLTYPEFLAGS* pImplTypeFlags)

型記述内の、実装されている 1 つのインターフェイスまたは基底インターフェイスに対する IMPLTYPEFLAGS 列挙を取得します。

indexDWORDinフラグを取得する、実装されているインターフェイスまたは基底インターフェイスのインデックス。
pImplTypeFlagsIMPLTYPEFLAGS*outIMPLTYPEFLAGS 列挙値。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

これらのフラグは、継承という行為に関連付けられており、継承されるインターフェイスそのものに関連付けられているわけではありません。

vtbl 10 HRESULT GetIDsOfNames(LPWSTR* rgszNames, DWORD cNames, INT* pMemId)

メンバー名とメンバー ID の間、およびパラメーター名とパラメーター ID の間のマッピングを行います。

rgszNamesLPWSTR*inマッピングする名前の配列。
cNamesDWORDinマッピングする名前の数。
pMemIdINT*out名前のマッピングが格納される、呼び出し元が割り当てた配列。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

GetIDsOfNames 関数は、メンバーの名前 (rgszNames[0]) とそのパラメーター (rgszNames[1] ...rgszNames[cNames- 1]) を、メンバーの ID (pMemId[0]) および指定されたパラメーターの ID (pMemId[1] ... pMemId[cNames- 1]) にマッピングします。パラメーターの ID は、メンバー関数の引数リスト内の最初のパラメーターが 0、2 番目が 1、というように割り当てられます。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

vtbl 11 HRESULT Invoke(void* pvInstance, INT memid, DISPATCH_FLAGS wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, DWORD* puArgErr)

型記述で記述されるインターフェイスを実装するオブジェクトのメソッドを呼び出すか、そのプロパティにアクセスします。

pvInstancevoid*inこの型記述で記述されるインターフェイスのインスタンス。
memidINTinインターフェイスのメンバー。
wFlagsDISPATCH_FLAGSin

invoke 呼び出しのコンテキストを記述するフラグ。

意味
DISPATCH_METHOD
メンバーはメソッドとしてアクセスされます。あいまいな場合は、このフラグと DISPATCH_PROPERTYGET フラグの両方を設定できます。
DISPATCH_PROPERTYGET
メンバーはプロパティまたはデータメンバーとして取得されます。
DISPATCH_PROPERTYPUT
メンバーはプロパティまたはデータメンバーとして変更されます。
DISPATCH_PROPERTYPUTREF
メンバーは、値の代入ではなく参照の代入を使用して変更されます。このフラグは、プロパティがオブジェクトへの参照を受け入れる場合にのみ有効です。
pDispParamsDISPPARAMS*inout引数の配列、名前付き引数の DISPID の配列、および各配列内の要素数のカウント。
pVarResultVARIANT*out結果。呼び出し元がいかなる結果も期待しない場合は null にする必要があります。wFlagsDISPATCH_PROPERTYPUT または DISPATCH_PROPERTYPUTREF を指定している場合、pVarResultis は無視されます。
pExcepInfoEXCEPINFO*out例外情報構造体。DISP_E_EXCEPTION が返された場合にのみ設定されます。pExcepInfo が入力時に null の場合、HRESULT エラーのみが返されます。
puArgErrDWORD*outInvoke が DISP_E_TYPEMISMATCH を返す場合、puArgErr は型が正しくない引数の (rgvarg 内での) インデックスを示します。複数の引数がエラーを返す場合、puArgErr はエラーのある最初の引数のみを示します。pDispParams->rgvarg 内の引数は逆順で現れるため、最初の引数は配列内で最も高いインデックスを持つものになります。このパラメーターを null にすることはできません。

戻り値

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
DISP_E_EXCEPTION
呼び出されたメンバーがエラーの 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 を持つ項目を見つけるために基底の型記述に対して再帰的に処理を行います。

vtbl 12 HRESULT GetDocumentation(INT memid, LPWSTR* pBstrName, LPWSTR* pBstrDocString, DWORD* pdwHelpContext, LPWSTR* pBstrHelpFile)

指定された型記述に対する、ドキュメント文字列、完全なヘルプファイル名およびパス、ならびにヘルプトピックのコンテキスト ID を取得します。

memidINTinドキュメントを返すメンバーの ID。
pBstrNameLPWSTR*outoptional指定された項目の名前。呼び出し元が項目名を必要としない場合、pBstrName は null にできます。
pBstrDocStringLPWSTR*outoptional指定された項目のドキュメント文字列。呼び出し元がドキュメント文字列を必要としない場合、pBstrDocString は null にできます。
pdwHelpContextDWORD*outヘルプのローカライズコンテキスト。呼び出し元がヘルプコンテキストを必要としない場合、null にできます。
pBstrHelpFileLPWSTR*outoptionalヘルプファイルに使用される DLL を含むファイルの完全修飾名。呼び出し元がファイル名を必要としない場合、null にできます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

GetDocumentation 関数は、memid パラメーターで指定されたメンバーのドキュメントへのアクセスを提供します。渡された memidMEMBERID_NIL の場合、型記述のドキュメントが返されます。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

呼び出し元は、pBstrNamepBstrDocStringpBstrHelpFile が参照する BSTR を解放するために SysFreeString を使用する必要があります。

vtbl 13 HRESULT GetDllEntry(INT memid, INVOKEKIND invKind, LPWSTR* pBstrDllName, LPWSTR* pBstrName, WORD* pwOrdinal)

DLL 内の関数のエントリポイントの記述または仕様を取得します。

memidINTinDLL エントリ記述を返すメンバー関数の ID。
invKindINVOKEKINDinmemid で識別されるメンバーの種類。1 つの memid が最大 3 つの個別の関数を識別できるため、プロパティにとって重要です。
pBstrDllNameLPWSTR*outoptionalnull でない場合、この関数は pBstrDllName に DLL の名前を設定します。
pBstrNameLPWSTR*outoptionalnull でない場合、この関数は pBstrName にエントリポイントの名前を設定します。エントリポイントが序数で指定されている場合、この引数は null になります。
pwOrdinalWORD*outnull でなく、かつ関数が序数で定義されている場合、この関数は pwOrdinal にその序数を設定します。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

呼び出し元は、エントリ記述を取得したいメンバー関数を表すメンバー ID を渡します。関数に DLL エントリポイントがある場合、その関数を含む DLL の名前と、その名前または序数識別子が、呼び出し元によって割り当てられた渡されたポインターに格納されます。関数に DLL エントリポイントがない場合、エラーが返されます。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

呼び出し元は、pBstrNamepBstrDllName が参照する BSTR を解放するために SysFreeString を使用する必要があります。

vtbl 14 HRESULT GetRefTypeInfo(DWORD hRefType, ITypeInfo** ppTInfo)

型記述が他の型記述を参照している場合、参照されている型記述を取得します。

hRefTypeDWORDin返す、参照されている型記述へのハンドル。
ppTInfoITypeInfo**out参照されている型記述。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

戻り値では、2 番目のパラメーターに、この型記述から参照されている型記述へのポインターへのポインターが格納されます。型記述は、その変数、関数のパラメーター、または関数の戻り値の型として現れる各型記述への参照を持たなければなりません。たとえば、データメンバーの型がレコード型である場合、そのデータメンバーの型記述には、参照されている型記述の hRefType が含まれます。型記述へのポインターを取得するには、この参照を GetRefTypeInfo に渡します。

vtbl 15 HRESULT AddressOfMember(INT memid, INVOKEKIND invKind, void** ppv)

DLL 内で定義されているような、静的関数または静的変数のアドレスを取得します。

memidINTinアドレスを取得する静的メンバーのメンバー ID。メンバー ID は DISPID によって定義されます。
invKindINVOKEKINDinメンバーがプロパティかどうか、そうであればどの種類かを示します。
ppvvoid**out静的メンバー。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

これらのアドレスは、呼び出し元が型記述への参照を解放するまで有効です。invKind パラメーターは、プロパティ関数のアドレスが要求されている場合を除いて無視できます。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

vtbl 16 HRESULT CreateInstance(IUnknown* pUnkOuter, GUID* riid, void** ppvObj)

コンポーネントオブジェクトクラス (coclass) を記述する型の新しいインスタンスを作成します。

pUnkOuterIUnknown*in制御を行う IUnknown。Null の場合、スタンドアロンのインスタンスが作成されます。有効な場合、集約オブジェクトが作成されます。
riidGUID*in呼び出し元が、結果として得られるオブジェクトと通信するために使用するインターフェイスの ID。
ppvObjvoid**out作成されたオブジェクトのインスタンス。

戻り値

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_NOINTERFACE
OLE は、1 つ以上の必要なインターフェイスの実装を見つけられませんでした。

GetActiveObject または CoCreateInstance から追加のエラーが返される場合があります。

解説(Remarks)

コンポーネントオブジェクトクラス (coclass) を記述する型の場合、CreateInstance はクラスの新しいインスタンスを作成します。通常、CreateInstance は型記述の GUID を指定して CoCreateInstance を呼び出します。Application オブジェクトの場合、まず GetActiveObject を呼び出します。アプリケーションがアクティブな場合、GetActiveObject はアクティブなオブジェクトを返します。それ以外の場合、GetActiveObject が失敗すると、CreateInstanceCoCreateInstance を呼び出します。

vtbl 17 HRESULT GetMops(INT memid, LPWSTR* pBstrMops)

マーシャリング情報を取得します。

memidINTinどのマーシャリング情報が必要かを示すメンバー ID。
pBstrMopsLPWSTR*out参照されている型記述で記述される構造体のフィールドをマーシャリングする際に使用されるオペコード文字列。返す情報がない場合は null。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

渡されたメンバー ID が MEMBERID_NIL の場合、この関数は、型記述で記述される構造体のフィールドをマーシャリングするためのオペコード文字列を返します。それ以外の場合、インデックスで指定された関数をマーシャリングするためのオペコード文字列を返します。

型記述が別の型記述から継承している場合、この関数は、要求されたメンバー ID を持つ項目を見つけるために、必要に応じて基底の型記述に対して再帰的に処理を行います。

vtbl 18 HRESULT GetContainingTypeLib(ITypeLib** ppTLib, DWORD* pIndex)

含まれている型ライブラリと、その型ライブラリ内における型記述のインデックスを取得します。

ppTLibITypeLib**out含まれている型ライブラリ。
pIndexDWORD*out含まれている型ライブラリ内における型記述のインデックス。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_NOINTERFACE
OLE は、1 つ以上の必要なインターフェイスの実装を見つけられませんでした。
vtbl 19 void ReleaseTypeAttr(TYPEATTR* pTypeAttr)

ITypeInfo::GetTypeAttr で以前に返された TYPEATTR を解放します。

pTypeAttrTYPEATTR*in解放する TYPEATTR。
vtbl 20 void ReleaseFuncDesc(FUNCDESC* pFuncDesc)

ITypeInfo::GetFuncDesc で以前に返された FUNCDESC を解放します。

pFuncDescFUNCDESC*in解放する FUNCDESC。
vtbl 21 void ReleaseVarDesc(VARDESC* pVarDesc)

ITypeInfo::GetVarDesc で以前に返された VARDESC を解放します。

pVarDescVARDESC*in解放する VARDESC。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。