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