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