IFunctionInstanceCollection
COM公式ドキュメント
クエリまたはインスタンス取得要求の結果として返される IFunctionInstance オブジェクトのグループを表します。
解説(Remarks)
IFunctionInstanceCollection インターフェイスを使用すると、クライアントプログラムは IFunctionInstance オブジェクトのコレクションを列挙できます。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コレクション内の関数インスタンスの数を取得します。
| pdwCount | DWORD* | out | 関数インスタンスの数。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pdwCount パラメーターが NULL です。 |
解説(Remarks)
GetCount メソッドと Item メソッドを使用すると、単純な for ループまたは while ループで、コレクションに含まれるすべての関数インスタンスを列挙できます。
指定した関数インスタンスとそのインデックスをコレクションから取得します。
| pszInstanceIdentity | LPWSTR | in | 取得する関数インスタンスの識別子(GetID を参照)。 |
| pdwIndex | DWORD* | out | インデックス番号。 |
| ppIFunctionInstance | IFunctionInstance** | out | 関数インスタンスを受け取る IFunctionInstance インターフェイスポインターへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pInstanceIdentity で識別される関数インスタンスが、関数インスタンスコレクション内に存在しません。 | |
| pdwIndex または pInstanceIdentity の値が無効です。 | |
| この操作の実行に必要なメモリをメソッドが割り当てられません。 |
指定した関数インスタンスをインデックスで取得します。
| dwIndex | DWORD | in | 取得する関数インスタンスの 0 から始まるインデックス。 |
| ppIFunctionInstance | IFunctionInstance** | out | 関数インスタンスを受け取る IFunctionInstance インターフェイスポインターへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ppFunctionInstance パラメーターが NULL であるか、dwIndex が範囲外です。 |
解説(Remarks)
GetCount メソッドと Item メソッドを使用すると、単純な for ループまたは while ループで、コレクションに含まれるすべての関数インスタンスを列挙できます。
関数インスタンスをコレクションに追加します。
| pIFunctionInstance | IFunctionInstance* | in | コレクションに追加する関数インスタンスの IFunctionInstance インターフェイスへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pIFunctionInstance の値が無効です。 | |
| この操作の実行に必要なメモリをメソッドが割り当てられません。 |
指定した関数インスタンスを削除し、削除される関数インスタンスへのポインターを返します。
| dwIndex | DWORD | in | コレクション内のインデックス番号。 |
| ppIFunctionInstance | IFunctionInstance** | out | 関数インスタンスを受け取る IFunctionInstance インターフェイスポインターへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| dwIndex の値が無効です。 | |
| この操作の実行に必要なメモリをメソッドが割り当てられません。 |
指定した関数インスタンスをコレクションから削除します。
| dwIndex | DWORD | in | コレクションから削除する項目のインデックス番号。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| dwIndex の値が無効です。 | |
| この操作の実行に必要なメモリをメソッドが割り当てられません。 |
すべての関数インスタンスをコレクションから削除します。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFunctionInstanceCollection "{F0A3D895-855C-42A2-948D-2F97D450ECB1}" #usecom global IFunctionInstanceCollection IID_IFunctionInstanceCollection "{BA818CE5-B55F-443F-AD39-2FE89BE6191F}" #comfunc global IFunctionInstanceCollection_GetCount 3 var #comfunc global IFunctionInstanceCollection_Get 4 wstr,var,sptr #comfunc global IFunctionInstanceCollection_Item 5 int,sptr #comfunc global IFunctionInstanceCollection_Add 6 sptr #comfunc global IFunctionInstanceCollection_Remove 7 int,sptr #comfunc global IFunctionInstanceCollection_Delete 8 int #comfunc global IFunctionInstanceCollection_DeleteAll 9 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IFunctionInstanceCollection "{F0A3D895-855C-42A2-948D-2F97D450ECB1}" #usecom global IFunctionInstanceCollection IID_IFunctionInstanceCollection "{BA818CE5-B55F-443F-AD39-2FE89BE6191F}" #comfunc global IFunctionInstanceCollection_GetCount 3 sptr #comfunc global IFunctionInstanceCollection_Get 4 wstr,sptr,sptr #comfunc global IFunctionInstanceCollection_Item 5 int,sptr #comfunc global IFunctionInstanceCollection_Add 6 sptr #comfunc global IFunctionInstanceCollection_Remove 7 int,sptr #comfunc global IFunctionInstanceCollection_Delete 8 int #comfunc global IFunctionInstanceCollection_DeleteAll 9 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。