ICatalogCollection
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
COM+ カタログ内の任意のコレクションを表します。ICatalogCollection を使用すると、コレクション内の項目の列挙、追加、削除、取得、および関連するコレクションへのアクセスを行うことができます。
メソッド 16
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
コレクションのオブジェクトを反復処理するために使用できる列挙子を取得します。
| ppEnumVariant | IUnknown** | out | コレクションを列挙する IEnumVARIANT 列挙子の IUnknown インターフェイスを受け取るポインタである。 |
指定されたインデックスに対応する項目を取得します。
| lIndex | INT | in | 取得する項目の 0 始まりのインデックスを指定する。 |
| ppCatalogObject | IDispatch** | out | 指定インデックスのカタログオブジェクトを表す IDispatch インターフェイスを受け取るポインタである。 |
コレクション内の項目数を取得します。(ICatalogCollection.get_Count)
| plObjectCount | INT* | out | コレクション内のオブジェクト数を受け取るポインタである。 |
インデックスを指定してコレクションから項目を削除し、それより大きいインデックス値を持つ項目のインデックスを付け直します。
| lIndex | INT | in | 削除する項目の 0 から始まるインデックス。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
RemoveEnabled プロパティは、コレクションがこのメソッドをサポートしているかどうかを示します。
オブジェクトが削除されると、変更を反映するために Count プロパティが 1 つ減らされます。
これらの変更は、SaveChanges を呼び出すまで COM+ カタログ データ ストアには反映されません。
コレクションに項目を追加し、最も大きいインデックス値を割り当てます。
| ppCatalogObject | IDispatch** | out | 新しいオブジェクトの ICatalogObject インターフェイス ポインターへのポインター。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
AddEnabled プロパティは、コレクションがこのメソッドをサポートしているかどうかを示します。
オブジェクトが追加されると、変更を反映するために Count プロパティが 1 つ増やされます。
この変更は、SaveChanges を使用するまで、永続化された COM+ カタログ データ ストアには反映されません。
コレクションに含まれるすべての項目のデータをコレクションに読み込みます。
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| 1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 |
解説(Remarks)
保留中の変更を保存したい場合は、Populate メソッドを呼び出す前に SaveChanges メソッドを呼び出してください。コレクションに加えられた未保存の変更は、Populate メソッドを呼び出すと失われます。
コレクションおよびそれに含まれる項目に加えられたすべての保留中の変更を COM+ カタログ データ ストアに保存します。
| pcChanges | INT* | out | 試行されているコレクションへの変更の数。保留中の変更がない場合、値は 0 になります。一部の変更が失敗しても、この戻り値には失敗は反映されず、試行された変更の数のままです。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| 1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 |
解説(Remarks)
特定の項目について、SaveChanges はすべてのプロパティを同時にカタログに書き込みます。つまり、その項目への書き込みが成功すると、保持していた項目に設定されているすべてのプロパティがカタログに反映されます。コレクション内の同じ項目を複数の側が書き込む場合の規則は、最後に書き込んだ側が完全に優先されるというものです。部分的な更新は行われません。
現在のコレクションに関連する、COM+ カタログ内のコレクションを取得します。
| bstrCollName | LPWSTR | in | 取得するコレクションの名前。 |
| varObjectKey | VARIANT | in | 取得するコレクションの親項目の Key プロパティ値。 |
| ppCatalogCollection | IDispatch** | out | 取得されたコレクションの ICatalogCollection インターフェイス。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
このメソッドは、取得されたコレクション内の項目のデータをカタログ データ ストアから読み込みません。コレクション内の項目のデータを読み込むには、Populate メソッドを使用してください。
コレクションの名前を取得します。
| pVarNamel | VARIANT* | out | コレクションの名前を受け取る VARIANT へのポインタである。 |
コレクションに対して Add メソッドが有効かどうかを示します。
| pVarBool | VARIANT_BOOL* | out | このコレクションへの項目追加が許可されているかどうかを受け取る VARIANT_BOOL へのポインタである。 |
コレクションに対して Remove メソッドが有効かどうかを示します。
| pVarBool | VARIANT_BOOL* | out | このコレクションからの項目削除が許可されているかどうかを受け取る VARIANT_BOOL へのポインタである。 |
コレクションのユーティリティ インターフェイスを取得します。
| ppIDispatch | IDispatch** | out | ユーティリティ インターフェイス。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| 1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 |
カタログ データ ストアのメジャー バージョン番号を取得します。
| plMajorVersion | INT* | out | データストアのメジャーバージョン番号を受け取るポインタである。 |
カタログ データ ストアのマイナー バージョン番号を取得します。
| plMinorVersionl | INT* | out | データストアのマイナーバージョン番号を受け取るポインタである。 |
指定されたキーに基づいて、COM+ カタログからコレクション内の選択された項目のリストを読み込みます。
| psaKeys | SAFEARRAY* | in | データを読み込む対象となるオブジェクトの Key プロパティ値。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| 1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 |
解説(Remarks)
保留中の変更を保存したい場合は、PopulateByKey を呼び出す前に SaveChanges メソッドを呼び出してください。コレクションに加えられた未保存の変更は、PopulateByKey を呼び出すと失われます。
将来の使用のために予約されています。(ICatalogCollection.PopulateByQuery)
| bstrQueryString | LPWSTR | in | コレクションを読み込むためのクエリ文字列を指定する。 |
| lQueryType | INT | in | クエリの種類を示す値を指定する。 |
戻り値
このメソッドは、標準の戻り値である E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| 1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICatalogCollection "{6EB22872-8A19-11D0-81B6-00A0C9231C29}" #usecom global ICatalogCollection IID_ICatalogCollection "{6EB22883-8A19-11D0-81B6-00A0C9231C29}" #comfunc global ICatalogCollection_get__NewEnum 7 sptr #comfunc global ICatalogCollection_get_Item 8 int,sptr #comfunc global ICatalogCollection_get_Count 9 var #comfunc global ICatalogCollection_Remove 10 int #comfunc global ICatalogCollection_Add 11 sptr #comfunc global ICatalogCollection_Populate 12 #comfunc global ICatalogCollection_SaveChanges 13 var #comfunc global ICatalogCollection_GetCollection 14 wstr,int,sptr #comfunc global ICatalogCollection_get_Name 15 var #comfunc global ICatalogCollection_get_AddEnabled 16 var #comfunc global ICatalogCollection_get_RemoveEnabled 17 var #comfunc global ICatalogCollection_GetUtilInterface 18 sptr #comfunc global ICatalogCollection_get_DataStoreMajorVersion 19 var #comfunc global ICatalogCollection_get_DataStoreMinorVersion 20 var #comfunc global ICatalogCollection_PopulateByKey 21 var #comfunc global ICatalogCollection_PopulateByQuery 22 wstr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICatalogCollection "{6EB22872-8A19-11D0-81B6-00A0C9231C29}" #usecom global ICatalogCollection IID_ICatalogCollection "{6EB22883-8A19-11D0-81B6-00A0C9231C29}" #comfunc global ICatalogCollection_get__NewEnum 7 sptr #comfunc global ICatalogCollection_get_Item 8 int,sptr #comfunc global ICatalogCollection_get_Count 9 sptr #comfunc global ICatalogCollection_Remove 10 int #comfunc global ICatalogCollection_Add 11 sptr #comfunc global ICatalogCollection_Populate 12 #comfunc global ICatalogCollection_SaveChanges 13 sptr #comfunc global ICatalogCollection_GetCollection 14 wstr,int,sptr #comfunc global ICatalogCollection_get_Name 15 sptr #comfunc global ICatalogCollection_get_AddEnabled 16 sptr #comfunc global ICatalogCollection_get_RemoveEnabled 17 sptr #comfunc global ICatalogCollection_GetUtilInterface 18 sptr #comfunc global ICatalogCollection_get_DataStoreMajorVersion 19 sptr #comfunc global ICatalogCollection_get_DataStoreMinorVersion 20 sptr #comfunc global ICatalogCollection_PopulateByKey 21 sptr #comfunc global ICatalogCollection_PopulateByQuery 22 wstr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。