CoRegisterClassObject 関数 (combaseapi.h)
他のアプリケーションが OLE に接続できるよう、EXE クラス オブジェクトを OLE に登録します。
構文
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
パラメーター
[in] rclsid
登録する CLSID。
[in] pUnk
可用性が公開されているクラス オブジェクトの IUnknown インターフェイスへのポインター。
[in] dwClsContext
実行可能コードを実行するコンテキスト。 これらのコンテキスト値の詳細については、 CLSCTX 列挙を参照してください。
[in] flags
クラス オブジェクトへの接続方法を示します。 これらのフラグの詳細については、 REGCLS 列挙を参照してください。
[out] lpdwRegister
登録されているクラス オブジェクトを識別する値へのポインター。登録を取り消すために CoRevokeClassObject 関数によって後で使用されます。
戻り値
この関数は、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
クラス オブジェクトが正常に登録されました。 |
注釈
EXE オブジェクト アプリケーションでは、起動時に CoRegisterClassObject を 呼び出す必要があります。 また、EXE で使用するのと同じ EXE またはその他のコード (DLL など) で使用する内部オブジェクトを登録するためにも使用できます。 EXE オブジェクト アプリケーションのみが CoRegisterClassObject を呼び出します。 オブジェクト ハンドラーまたは DLL オブジェクト アプリケーションでは、この関数は呼び出されません。代わりに、 DllGetClassObject 関数を実装してエクスポートする必要があります。
起動時に、複数使用の EXE オブジェクト アプリケーションでクラス オブジェクト ( IClassFactory インターフェイスを含む) を作成し、 CoRegisterClassObject を呼び出してクラス オブジェクトを登録する必要があります。 複数の異なるクラス (複数の種類の埋め込み可能オブジェクトなど) をサポートするオブジェクト アプリケーションでは、それぞれに異なるクラス オブジェクトを割り当てて登録する必要があります。
同じクラス オブジェクトの複数の登録は独立しており、エラーは発生しません。 後続の登録のたびに、 lpdwRegister に一意のキーが生成されます。
複数のドキュメント インターフェイス (MDI) アプリケーションは、クラス オブジェクトを登録する必要があります。 単一ドキュメント インターフェイス (SDI) アプリケーションは、 /Embedding スイッチを使用して起動できる場合にのみ、クラス オブジェクトを登録する必要があります。
クラス オブジェクトのサーバーは、次のすべてが当てはまる場合に CoRevokeClassObject を呼び出してクラス オブジェクトを取り消す (登録を削除する) 必要があります。
- オブジェクト定義の既存のインスタンスはありません。
- クラス オブジェクトにロックはありません。
- クラス オブジェクトにサービスを提供するアプリケーションは、ユーザー制御下にありません (ディスプレイ上のユーザーには表示されません)。
Windows Server 2003 の時点で、COM オブジェクト アプリケーションがサービスとして登録されている場合、COM は登録を検証します。 COM は、サービスコントロールマネージャー (SCM) のサービスのプロセス ID が登録プロセスのプロセス ID と一致することを確認します。 そうでない場合、COM は登録に失敗します。 COM オブジェクト アプリケーションがレジストリ キーを持たないシステム アカウントで実行されている場合、COM はオブジェクト アプリケーション ID を 起動ユーザーとして扱います。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | combaseapi.h (Objbase.h を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |