次の方法で共有


DllCanUnloadNow 関数 (combaseapi.h)

この関数を実装する DLL が使用中かどうかを判断します。 そうでない場合、呼び出し元は DLL をメモリからアンロードできます。

OLE では、この関数は提供されません。 OLE コンポーネント オブジェクト モデル (COM) をサポートする DLL では、 DllCanUnloadNow を実装してエクスポートする必要があります。

構文

HRESULT DllCanUnloadNow();

戻り値

関数が成功した場合、戻り値はS_OK。 それ以外の場合は、S_FALSE。

注釈

DllCanUnloadNow の呼び出しによって、エクスポート元の DLL がまだ使用されているかどうかを判断します。 既存のオブジェクトを管理していない場合、DLL は使用されなくなりました (すべてのオブジェクトの参照カウントは 0 です)。

呼び出し元へのメモ

DllCanUnloadNow を直接呼び出す必要はありません。 OLE では、 CoFreeUnusedLibraries 関数の呼び出しによってのみ呼び出されます。 S_OKを返すと、 CoFreeUnusedLibraries によって DLL が解放されます。

実装者へのメモ

CoGetClassObject 関数の呼び出しを通じて動的に読み込まれる DLL に DllCanUnloadNow を実装し、DLL からエクスポートする必要があります。 (同じ DLL に DllGetClassObject 関数を実装してエクスポートする必要もあります)。

CoGetClassObject の呼び出しによって読み込まれた DLL が DllCanUnloadNow のエクスポートに失敗した場合、アプリケーションが CoUninitialize 関数を呼び出して OLE ライブラリを解放するまで、DLL はアンロードされません。

DLL が管理するオブジェクトへの既存の参照がある場合、DllCanUnloadNow はS_FALSEを返す必要があります。

要件

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

こちらもご覧ください

DllGetClassObject