次の方法で共有


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

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

構文

HRESULT FreeSurrogate();

戻り値

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

注釈

代理プロセスで実行されている DLL サーバーがなくなった場合、COM は 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
ヘッダー objidl.h (ObjIdl.h を含む)

こちらもご覧ください

DllSurrogate

ISurrogate

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