CoRevokeClassObject 関数 (combaseapi.h)
以前に CoRegisterClassObject 関数に登録されたクラス オブジェクトが使用できなくなったことを OLE に通知します。
構文
HRESULT CoRevokeClassObject(
[in] DWORD dwRegister
);
パラメーター
[in] dwRegister
CoRegisterClassObject 関数から以前に返されたトークン。
戻り値
この関数は、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
クラス オブジェクトが正常に取り消されました。 |
解説
CoRevokeClassObject を正常に呼び出すと、クラス オブジェクトがグローバル クラス オブジェクト テーブルから削除されたことを意味します (ただし、クラス オブジェクトは解放されません)。 他のクライアントがまだクラス オブジェクトへのポインターを持っていて、 IUnknown::AddRef の呼び出しによって参照カウントがインクリメントされた場合、参照カウントは 0 になりません。 これが発生すると、クラス オブジェクトへの後続の呼び出し ( AddRef と IUnknown::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 |