ICatRegister
COM公式ドキュメント
レジストリ内のコンポーネントカテゴリ情報を登録および登録解除するためのメソッドを提供します。これには、カテゴリの人間が読める名前と、特定のコンポーネントまたはクラスが実装/要求するカテゴリの両方が含まれます。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
1つ以上のコンポーネントカテゴリを登録します。各コンポーネントカテゴリは、CATID とロケール依存の説明文字列のリストで構成されます。
| cCategories | DWORD | in | 登録するコンポーネントカテゴリの数。 |
| rgCategoryInfo | CATEGORYINFO* | in | 登録する各カテゴリに対応する CATEGORYINFO 構造体の配列。複数の CATEGORYINFO 構造体に同じ CATID を指定することで、同一のコンポーネントカテゴリに対して複数のロケールを登録できます。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
このメソッドは、通常はオペレーティングシステムまたはアプリケーションのインストールまたはアンインストールの一部として、カテゴリの所有者のみが呼び出すことができます。
1つ以上のコンポーネントカテゴリの登録を解除します。各コンポーネントカテゴリは、CATID とロケール依存の説明文字列のリストで構成されます。
| cCategories | DWORD | in | 削除するカテゴリの数。 |
| rgcatid | GUID* | in | 削除するカテゴリの CATID。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
このメソッドは、指定されたカテゴリ ID の1つ以上が登録されていない場合でも成功します。このメソッドは、通常はオペレーティングシステムまたはアプリケーションのインストールまたはアンインストールの一部として、カテゴリの所有者のみが呼び出すことができます。
このメソッドは、個々のクラスからコンポーネントカテゴリタグを削除しません。それを行うには、ICatRegister::UnRegisterClassReqCategories メソッドを使用してください。
クラスが1つ以上のコンポーネントカテゴリを実装するものとして登録します。
| rclsid | GUID* | in | クラス識別子。 |
| cCategories | DWORD | in | クラスのカテゴリ識別子として関連付けるカテゴリの数。 |
| rgcatid | GUID* | in | クラスのカテゴリ識別子として関連付ける CATID の配列。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、通常はコンポーネントのインストールの一部として、クラスの所有者のみが呼び出すことができます。
クラスから1つ以上の実装済みカテゴリ識別子を削除します。
| rclsid | GUID* | in | クラス識別子。 |
| cCategories | DWORD | in | 削除するカテゴリ CATID の数。 |
| rgcatid | GUID* | in | 削除する CATID の配列。この配列で指定されたカテゴリ ID のみが削除されます。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、指定されたカテゴリ ID の1つ以上がクラスに対して登録されていない場合でも成功します。このメソッドは、通常はコンポーネントのアンインストールの一部として、クラスの所有者のみが呼び出すことができます。
クラスが1つ以上のコンポーネントカテゴリを要求するものとして登録します。
| rclsid | GUID* | in | クラス識別子。 |
| cCategories | DWORD | in | クラスのカテゴリ識別子として関連付けるカテゴリ CATID の数。 |
| rgcatid | GUID* | in | クラスのカテゴリ識別子として関連付ける CATID の配列。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、通常はコンポーネントのインストールの一部として、クラスの所有者のみが呼び出すことができます。
クラスから1つ以上の要求カテゴリ識別子を削除します。
| rclsid | GUID* | in | クラス識別子。 |
| cCategories | DWORD | in | 削除するカテゴリ CATID の数。 |
| rgcatid | GUID* | in | 削除する CATID の配列。この配列で指定されたカテゴリ ID のみが削除されます。 |
戻り値
このメソッドは次の値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドが正常に完了しました。 | |
| 1つ以上の引数が正しくありません。 |
解説(Remarks)
エラーが発生した場合、このメソッドはレジストリが呼び出し前の状態に復元されることを保証しません。このメソッドは、指定されたカテゴリ ID の1つ以上がクラスに対して登録されていない場合でも成功します。
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 方式にも切替可。#define global IID_ICatRegister "{0002E012-0000-0000-C000-000000000046}" #usecom global ICatRegister IID_ICatRegister "{}" #comfunc global ICatRegister_RegisterCategories 3 int,sptr #comfunc global ICatRegister_UnRegisterCategories 4 int,sptr #comfunc global ICatRegister_RegisterClassImplCategories 5 sptr,int,sptr #comfunc global ICatRegister_UnRegisterClassImplCategories 6 sptr,int,sptr #comfunc global ICatRegister_RegisterClassReqCategories 7 sptr,int,sptr #comfunc global ICatRegister_UnRegisterClassReqCategories 8 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。