ISurrogate::FreeSurrogate メソッド (objidlbase.h)

DLL サーバーをアンロードします。

構文

HRESULT FreeSurrogate();

戻り値

このメソッドは、標準の戻り値E_UNEXPECTED、E_FAIL、およびS_OKを返すことができます。

注釈

COM は、サロゲート プロセスで実行されている DLL サーバーがなくなった場合に FreeSurrogate を呼び出します。 FreeSurrogate が呼び出されると、メソッドはサロゲートに登録されているすべてのクラス ファクトリを適切に取り消し、サロゲート プロセスを終了させる必要があります。

サロゲート プロセスは、使用されなくなった DLL サーバーをアンロードするために 、CoFreeUnusedLibraries 関数を定期的に呼び出す必要があります。 代理プロセスはこの責任を負います。これは通常、クライアントの責任です。 CoFreeUnusedLibraries は 、読み込まれたすべての DLL サーバーで DllCanUnloadNow 関数を呼び出します。 CoFreeUnusedLibraries は DLL サーバーでの DllCanUnloadNow の存在と適切な実装に依存するため、アンロードする必要があるすべての DLL サーバーをアンロードするとは限りません。すべてのサーバーが DllCanUnloadNow を実装しているわけではありません。この関数は、フリースレッド DLL では信頼できません。 さらに、サロゲートには、すべての DLL サーバーがなくなったときに通知を受け取る方法はありません。 ただし、COM は、すべての DLL サーバーがアンロードされたタイミングを判断し、 FreeSurrogate メソッドを呼び出します。

要件

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

こちらもご覧ください

DllSurrogate

ISurrogate

カスタム サロゲートの作成