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 を含む) |