私はそれを試してみましたが、私はそれが仕事を得るcouldntのDllmainはFreeLibraryを使用できますか?
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call==DLL_PROCESS_ATTACH)
if (!CheckSomething()) //check if a file doesnt exists for example
FreeLibrary(hModule);
}
を意味し、いくつかのcondifitonの場合には自己それをアンロードするDLLを作成します。ウォークスルーの代替ソリューションがある場合。 DLLをアンロードするプロセスを欲しくないと思います。
避け、クライアントコードは、DLLが働くことができない本当の理由に関連する方法はありませんエラーを診断することは非常に困難を取得します。クライアントコードが次に使用する可能性のあるエクスポートされた関数であれば、いつでもCheckSomething()を呼び出すことができます。 –
@HansPassantあなたの返事をお寄せいただきありがとうございますが、私の場合はクライアントをコントロールできません。このダーティな方法で行う必要があります。これはまったく良い練習ではありません。いずれにせよ、ロードされたくない場合は、 .. – CnativeFreak