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

ICatalogCollection

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID6eb22872-8a19-11d0-81b6-00a0c9231c29継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

COM+ カタログ内の任意のコレクションを表します。ICatalogCollection を使用すると、コレクション内の項目の列挙、追加、削除、取得、および関連するコレクションへのアクセスを行うことができます。

メソッド 16

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get__NewEnum(IUnknown** ppEnumVariant)

コレクションのオブジェクトを反復処理するために使用できる列挙子を取得します。

ppEnumVariantIUnknown**outコレクションを列挙する IEnumVARIANT 列挙子の IUnknown インターフェイスを受け取るポインタである。
vtbl 8 HRESULT get_Item(INT lIndex, IDispatch** ppCatalogObject)

指定されたインデックスに対応する項目を取得します。

lIndexINTin取得する項目の 0 始まりのインデックスを指定する。
ppCatalogObjectIDispatch**out指定インデックスのカタログオブジェクトを表す IDispatch インターフェイスを受け取るポインタである。
vtbl 9 HRESULT get_Count(INT* plObjectCount)

コレクション内の項目数を取得します。(ICatalogCollection.get_Count)

plObjectCountINT*outコレクション内のオブジェクト数を受け取るポインタである。
vtbl 10 HRESULT Remove(INT lIndex)

インデックスを指定してコレクションから項目を削除し、それより大きいインデックス値を持つ項目のインデックスを付け直します。

lIndexINTin削除する項目の 0 から始まるインデックス。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

解説(Remarks)

RemoveEnabled プロパティは、コレクションがこのメソッドをサポートしているかどうかを示します。

オブジェクトが削除されると、変更を反映するために Count プロパティが 1 つ減らされます。

これらの変更は、SaveChanges を呼び出すまで COM+ カタログ データ ストアには反映されません。

vtbl 11 HRESULT Add(IDispatch** ppCatalogObject)

コレクションに項目を追加し、最も大きいインデックス値を割り当てます。

ppCatalogObjectIDispatch**out新しいオブジェクトの ICatalogObject インターフェイス ポインターへのポインター。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

解説(Remarks)

AddEnabled プロパティは、コレクションがこのメソッドをサポートしているかどうかを示します。

オブジェクトが追加されると、変更を反映するために Count プロパティが 1 つ増やされます。

この変更は、SaveChanges を使用するまで、永続化された COM+ カタログ データ ストアには反映されません。

vtbl 12 HRESULT Populate()

コレクションに含まれるすべての項目のデータをコレクションに読み込みます。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。

戻り値 説明
S_OK
メソッドは正常に完了しました。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。

解説(Remarks)

保留中の変更を保存したい場合は、Populate メソッドを呼び出す前に SaveChanges メソッドを呼び出してください。コレクションに加えられた未保存の変更は、Populate メソッドを呼び出すと失われます。

vtbl 13 HRESULT SaveChanges(INT* pcChanges)

コレクションおよびそれに含まれる項目に加えられたすべての保留中の変更を COM+ カタログ データ ストアに保存します。

pcChangesINT*out試行されているコレクションへの変更の数。保留中の変更がない場合、値は 0 になります。一部の変更が失敗しても、この戻り値には失敗は反映されず、試行された変更の数のままです。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。

戻り値 説明
S_OK
メソッドは正常に完了しました。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。

解説(Remarks)

特定の項目について、SaveChanges はすべてのプロパティを同時にカタログに書き込みます。つまり、その項目への書き込みが成功すると、保持していた項目に設定されているすべてのプロパティがカタログに反映されます。コレクション内の同じ項目を複数の側が書き込む場合の規則は、最後に書き込んだ側が完全に優先されるというものです。部分的な更新は行われません。

vtbl 14 HRESULT GetCollection(LPWSTR bstrCollName, VARIANT varObjectKey, IDispatch** ppCatalogCollection)

現在のコレクションに関連する、COM+ カタログ内のコレクションを取得します。

bstrCollNameLPWSTRin取得するコレクションの名前。
varObjectKeyVARIANTin取得するコレクションの親項目の Key プロパティ値。
ppCatalogCollectionIDispatch**out取得されたコレクションの ICatalogCollection インターフェイス。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_FAIL、および S_OK を返すことがあります。

解説(Remarks)

このメソッドは、取得されたコレクション内の項目のデータをカタログ データ ストアから読み込みません。コレクション内の項目のデータを読み込むには、Populate メソッドを使用してください。

vtbl 15 HRESULT get_Name(VARIANT* pVarNamel)

コレクションの名前を取得します。

pVarNamelVARIANT*outコレクションの名前を受け取る VARIANT へのポインタである。
vtbl 16 HRESULT get_AddEnabled(VARIANT_BOOL* pVarBool)

コレクションに対して Add メソッドが有効かどうかを示します。

pVarBoolVARIANT_BOOL*outこのコレクションへの項目追加が許可されているかどうかを受け取る VARIANT_BOOL へのポインタである。
vtbl 17 HRESULT get_RemoveEnabled(VARIANT_BOOL* pVarBool)

コレクションに対して Remove メソッドが有効かどうかを示します。

pVarBoolVARIANT_BOOL*outこのコレクションからの項目削除が許可されているかどうかを受け取る VARIANT_BOOL へのポインタである。
vtbl 18 HRESULT GetUtilInterface(IDispatch** ppIDispatch)

コレクションのユーティリティ インターフェイスを取得します。

ppIDispatchIDispatch**outユーティリティ インターフェイス。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。

戻り値 説明
S_OK
メソッドは正常に完了しました。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。
vtbl 19 HRESULT get_DataStoreMajorVersion(INT* plMajorVersion)

カタログ データ ストアのメジャー バージョン番号を取得します。

plMajorVersionINT*outデータストアのメジャーバージョン番号を受け取るポインタである。
vtbl 20 HRESULT get_DataStoreMinorVersion(INT* plMinorVersionl)

カタログ データ ストアのマイナー バージョン番号を取得します。

plMinorVersionlINT*outデータストアのマイナーバージョン番号を受け取るポインタである。
vtbl 21 HRESULT PopulateByKey(SAFEARRAY* psaKeys)

指定されたキーに基づいて、COM+ カタログからコレクション内の選択された項目のリストを読み込みます。

psaKeysSAFEARRAY*inデータを読み込む対象となるオブジェクトの Key プロパティ値。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。

戻り値 説明
S_OK
メソッドは正常に完了しました。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。

解説(Remarks)

保留中の変更を保存したい場合は、PopulateByKey を呼び出す前に SaveChanges メソッドを呼び出してください。コレクションに加えられた未保存の変更は、PopulateByKey を呼び出すと失われます。

vtbl 22 HRESULT PopulateByQuery(LPWSTR bstrQueryString, INT lQueryType)

将来の使用のために予約されています。(ICatalogCollection.PopulateByQuery)

bstrQueryStringLPWSTRinコレクションを読み込むためのクエリ文字列を指定する。
lQueryTypeINTinクエリの種類を示す値を指定する。

戻り値

このメソッドは、標準の戻り値である E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED、および E_FAIL のほか、以下の値を返すことがあります。

戻り値 説明
S_OK
メソッドは正常に完了しました。
COMADMIN_E_OBJECTERRORS
1 つ以上のオブジェクトへのアクセス中にエラーが発生しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 不要)。