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

ICatRegister

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

公式ドキュメント

レジストリ内のコンポーネントカテゴリ情報を登録および登録解除するためのメソッドを提供します。これには、カテゴリの人間が読める名前と、特定のコンポーネントまたはクラスが実装/要求するカテゴリの両方が含まれます。

メソッド 6

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

vtbl 3 HRESULT RegisterCategories(DWORD cCategories, CATEGORYINFO* rgCategoryInfo)

1つ以上のコンポーネントカテゴリを登録します。各コンポーネントカテゴリは、CATID とロケール依存の説明文字列のリストで構成されます。

cCategoriesDWORDin登録するコンポーネントカテゴリの数。
rgCategoryInfoCATEGORYINFO*in登録する各カテゴリに対応する CATEGORYINFO 構造体の配列。複数の CATEGORYINFO 構造体に同じ CATID を指定することで、同一のコンポーネントカテゴリに対して複数のロケールを登録できます。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

このメソッドは、通常はオペレーティングシステムまたはアプリケーションのインストールまたはアンインストールの一部として、カテゴリの所有者のみが呼び出すことができます。

vtbl 4 HRESULT UnRegisterCategories(DWORD cCategories, GUID* rgcatid)

1つ以上のコンポーネントカテゴリの登録を解除します。各コンポーネントカテゴリは、CATID とロケール依存の説明文字列のリストで構成されます。

cCategoriesDWORDin削除するカテゴリの数。
rgcatidGUID*in削除するカテゴリの CATID。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

このメソッドは、指定されたカテゴリ ID の1つ以上が登録されていない場合でも成功します。このメソッドは、通常はオペレーティングシステムまたはアプリケーションのインストールまたはアンインストールの一部として、カテゴリの所有者のみが呼び出すことができます。

このメソッドは、個々のクラスからコンポーネントカテゴリタグを削除しません。それを行うには、ICatRegister::UnRegisterClassReqCategories メソッドを使用してください。

vtbl 5 HRESULT RegisterClassImplCategories(GUID* rclsid, DWORD cCategories, GUID* rgcatid)

クラスが1つ以上のコンポーネントカテゴリを実装するものとして登録します。

rclsidGUID*inクラス識別子。
cCategoriesDWORDinクラスのカテゴリ識別子として関連付けるカテゴリの数。
rgcatidGUID*inクラスのカテゴリ識別子として関連付ける CATID の配列。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、通常はコンポーネントのインストールの一部として、クラスの所有者のみが呼び出すことができます。

vtbl 6 HRESULT UnRegisterClassImplCategories(GUID* rclsid, DWORD cCategories, GUID* rgcatid)

クラスから1つ以上の実装済みカテゴリ識別子を削除します。

rclsidGUID*inクラス識別子。
cCategoriesDWORDin削除するカテゴリ CATID の数。
rgcatidGUID*in削除する CATID の配列。この配列で指定されたカテゴリ ID のみが削除されます。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、指定されたカテゴリ ID の1つ以上がクラスに対して登録されていない場合でも成功します。このメソッドは、通常はコンポーネントのアンインストールの一部として、クラスの所有者のみが呼び出すことができます。

vtbl 7 HRESULT RegisterClassReqCategories(GUID* rclsid, DWORD cCategories, GUID* rgcatid)

クラスが1つ以上のコンポーネントカテゴリを要求するものとして登録します。

rclsidGUID*inクラス識別子。
cCategoriesDWORDinクラスのカテゴリ識別子として関連付けるカテゴリ CATID の数。
rgcatidGUID*inクラスのカテゴリ識別子として関連付ける CATID の配列。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、通常はコンポーネントのインストールの一部として、クラスの所有者のみが呼び出すことができます。

vtbl 8 HRESULT UnRegisterClassReqCategories(GUID* rclsid, DWORD cCategories, GUID* rgcatid)

クラスから1つ以上の要求カテゴリ識別子を削除します。

rclsidGUID*inクラス識別子。
cCategoriesDWORDin削除するカテゴリ CATID の数。
rgcatidGUID*in削除する CATID の配列。この配列で指定されたカテゴリ ID のみが削除されます。

戻り値

このメソッドは次の値を返すことがあります。

Return code Description
S_OK
メソッドが正常に完了しました。
E_INVALIDARG
1つ以上の引数が正しくありません。

解説(Remarks)

エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、指定されたカテゴリ ID の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_ICatRegister "{0002E012-0000-0000-C000-000000000046}"
#usecom global ICatRegister IID_ICatRegister "{}"
#comfunc global ICatRegister_RegisterCategories             3 int,var
#comfunc global ICatRegister_UnRegisterCategories           4 int,var
#comfunc global ICatRegister_RegisterClassImplCategories    5 var,int,var
#comfunc global ICatRegister_UnRegisterClassImplCategories  6 var,int,var
#comfunc global ICatRegister_RegisterClassReqCategories     7 var,int,var
#comfunc global ICatRegister_UnRegisterClassReqCategories   8 var,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。