次の方法で共有


CoRevokeClassObject 関数 (combaseapi.h)

以前に CoRegisterClassObject 関数に登録されたクラス オブジェクトが使用できなくなったことを OLE に通知します。

構文

HRESULT CoRevokeClassObject(
  [in] DWORD dwRegister
);

パラメーター

[in] dwRegister

CoRegisterClassObject 関数から以前に返されたトークン。

戻り値

この関数は、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。

リターン コード 説明
S_OK
クラス オブジェクトが正常に取り消されました。

解説

CoRevokeClassObject を正常に呼び出すと、クラス オブジェクトがグローバル クラス オブジェクト テーブルから削除されたことを意味します (ただし、クラス オブジェクトは解放されません)。 他のクライアントがまだクラス オブジェクトへのポインターを持っていて、 IUnknown::AddRef の呼び出しによって参照カウントがインクリメントされた場合、参照カウントは 0 になりません。 これが発生すると、クラス オブジェクトへの後続の呼び出し ( AddRefIUnknown::Release の明白な例外を含む) が失敗した場合に、アプリケーションが役立つ場合があります。 CoRegisterClassObject はAddRef を呼び出し、CoRevokeClassObject はRelease を呼び出すので、2 つの関数は AddRef/リリース ペアを形成します。

オブジェクト アプリケーションは 、CoRevokeClassObject を 呼び出して、プログラムを終了する前に登録済みのクラス オブジェクトを取り消す必要があります。 クラス オブジェクトの実装者は、リリース シーケンスの一部として CoRevokeClassObject を 呼び出す必要があります。 CoRegisterClassObject の呼び出しでREGCLS_SINGLEUSEフラグ値を指定した場合でも、クラス オブジェクトを明示的に取り消す必要があります。これは、1 つのアプリケーションのみがクラス オブジェクトに接続できることを示します。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー combaseapi.h (Objbase.h を含む)
Library Ole32.lib
[DLL] Ole32.dll

関連項目

CoGetClassObject

CoRegisterClassObject