ITypeLib2
COM公式ドキュメント
オブジェクトの集合を記述するデータであるタイプライブラリを表します。(ITypeLib2)
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
カスタムデータを取得します。(ITypeLib2.GetCustData)
| guid | GUID* | in | データを識別するために使用する GUID。 |
| pVarVal | VARIANT* | out | 取得されたデータ。 |
戻り値
このメソッドは、以下のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が有効ではありません。 | |
| 操作を完了するためのメモリが不足しています。 |
ハッシュテーブルのサイズを効率的に決定するために必要となる、タイプライブラリに関する統計情報を返します。
| pcUniqueNames | DWORD* | out | 一意な名前の数。呼び出し側がこの情報を必要としない場合は NULL を設定します。 |
| pcchUniqueNames | DWORD* | out | 一意な名前の数の変化量。 |
戻り値
このメソッドは、以下のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が有効ではありません。 | |
| 操作を完了するためのメモリが不足しています。 |
ライブラリのドキュメント文字列、完全な Help ファイル名およびパス、使用するローカライズコンテキスト、および Help ファイル内のライブラリ Help トピックのコンテキスト ID を取得します。
| index | INT | in | ドキュメントを返す対象となるタイプ記述のインデックス。index が -1 の場合は、ライブラリのドキュメントが返されます。 |
| lcid | DWORD | in | ロケール識別子。 |
| pbstrHelpString | LPWSTR* | outoptional | 指定した項目の名前。呼び出し側が項目名を必要としない場合は、pbstrHelpString を null にできます。 |
| pdwHelpStringContext | DWORD* | out | Help のローカライズコンテキスト。呼び出し側が Help コンテキストを必要としない場合は null にできます。 |
| pbstrHelpStringDll | LPWSTR* | outoptional | Help ファイルに使用する DLL を含むファイルの完全修飾名。呼び出し側がファイル名を必要としない場合は null にできます。 |
戻り値
このメソッドは、以下のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が有効ではありません。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
タイプライブラリレベルの情報を取得します。呼び出し側は BSTR パラメーターを解放する必要があります。
この関数は、この項目に Help 文字列コンテキストが存在する場合、目的の Help 文字列を取得するために、指定した DLL 内の _DLLGetDocumentation を呼び出します。Help 文字列コンテキストが存在しない場合、またはエラーが発生した場合は、GetDocumentation メソッドに処理を委ね、関連付けられたドキュメント文字列を返します。
ライブラリのすべてのカスタムデータ項目を取得します。(ITypeLib2.GetAllCustData)
| pCustData | CUSTDATA* | out | カスタムデータ項目。 |
戻り値
このメソッドは、以下のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 1 つ以上の引数が有効ではありません。 | |
| 操作を完了するためのメモリが不足しています。 |
解説(Remarks)
呼び出し後、呼び出し側は ClearCustData を呼び出して、カスタムデータ項目を保持するために使用したメモリを解放する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITypeLib2 "{00020411-0000-0000-C000-000000000046}" #usecom global ITypeLib2 IID_ITypeLib2 "{}" #comfunc global ITypeLib2_GetCustData 13 var,var #comfunc global ITypeLib2_GetLibStatistics 14 var,var #comfunc global ITypeLib2_GetDocumentation2 15 int,int,var,var,var #comfunc global ITypeLib2_GetAllCustData 16 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ITypeLib2 "{00020411-0000-0000-C000-000000000046}" #usecom global ITypeLib2 IID_ITypeLib2 "{}" #comfunc global ITypeLib2_GetCustData 13 sptr,sptr #comfunc global ITypeLib2_GetLibStatistics 14 sptr,sptr #comfunc global ITypeLib2_GetDocumentation2 15 int,int,sptr,sptr,sptr #comfunc global ITypeLib2_GetAllCustData 16 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。