CoRevokeMallocSpy 関数 (objbase.h)
登録済みの IMallocSpy オブジェクトを 取り消します。
構文
HRESULT CoRevokeMallocSpy();
戻り値
この関数は、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
オブジェクトが正常に取り消されました。 |
|
現在、スパイは登録されていません。 |
|
スパイは登録されているが、このスパイがアクティブだった間に未解決の割り当て(まだ解放されていない)がある。 |
解説
IMallocSpy オブジェクトは、取り消されると解放されます。 このリリースは、CoRegisterMallocSpy 関数による QueryInterface 関数の実装における IUnknown::AddRef の呼び出しに対応しています。 IMallocSpy インターフェイスの実装では、適切なクリーンアップを行う必要があります。
リターン コードがE_ACCESSDENIED場合、スパイがアクティブな間に行われた未処理の割り当てがまだ存在します。 この場合、登録されたスパイは、スパイだけが知っているこれらの割り当てに任意のヘッダーやトレーラーをアタッチしている可能性があるため、現時点では取り消すことができません。 スパイの PreFree (または PreRealloc) メソッドだけが、これらのヘッダーとトレーラーを考慮する方法を知っています。 E_ACCESSDENIEDを返す前に、 CoRevokeMallocSpy は取り消しが保留中であることを内部的にメモします。 未処理の割り当てが解放されると、取り消しが自動的に続行され、 IMallocSpy オブジェクトが解放されます。 したがって、 CoRevokeMallocSpy は、E_ACCESSDENIEDが返された場合でも、 CoRegisterMallocSpy の呼び出しごとに 1 回だけ呼び出す必要があります。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objbase.h |
Library | Ole32.lib |
[DLL] | Ole32.dll |