summaryrefslogtreecommitdiff
path: root/zen/FindFilePlus/dll_main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zen/FindFilePlus/dll_main.cpp')
-rw-r--r--zen/FindFilePlus/dll_main.cpp66
1 files changed, 0 insertions, 66 deletions
diff --git a/zen/FindFilePlus/dll_main.cpp b/zen/FindFilePlus/dll_main.cpp
deleted file mode 100644
index caa5930d..00000000
--- a/zen/FindFilePlus/dll_main.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-// **************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
-// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *
-// **************************************************************************
-
-#define WIN32_LEAN_AND_MEAN
-#include <zen/win.h>
-
-#include "init_dll_binding.h"
-
-/*
-http://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx
-"DllMain is called while the loader-lock is held. [...] You cannot call any function in
-DllMain that directly or indirectly tries to acquire the loader lock. Otherwise, you will
-introduce the possibility that your application deadlocks or crashes."
-
-it's even worse: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx
-"If your DLL is linked with the C run-time library (CRT), the entry point provided by the CRT calls the constructors
-and destructors for global and static C++ objects. Therefore, these restrictions for DllMain also apply to constructors
-and destructors and any code that is called from them."
-
-Example: http://blog.barthe.ph/2009/07/30/no-stdlib-in-dllmai/
-
-Empirical study on DLL initialization order
--------------------------------------------
-I. statically linked DLL:
- DLL, static object constructors
- DLL, DllMain(): DLL_PROCESS_ATTACH
- main thread, static object constructors
- main thread, enter main()
- DLL, DllMain(): DLL_THREAD_ATTACH
- DLL, DllMain(): DLL_THREAD_DETACH
- main thread, exit main()
- main thread, static object destructors
- DLL, DllMain(): DLL_PROCESS_DETACH
- DLL, static object destructors
-
-II. dynamically linked DLL (living in main()):
- main thread, static object constructors
- main thread, main(): LoadLibrary
- DLL, static object constructors
- DLL, DllMain(): DLL_PROCESS_ATTACH
- main thread, main(): FreeLibrary
- DLL, DllMain(): DLL_PROCESS_DETACH
- DLL, static object destructors
- main thread, static object destructors
-*/
-
-//optional: add init/teardown logic here
-BOOL APIENTRY DllMain(HINSTANCE hinstDLL,
- DWORD fdwReason,
- LPVOID lpvReserved)
-{
- switch (fdwReason)
- {
- case DLL_PROCESS_ATTACH:
- if (!findplus::initDllBinding())
- return false;
- case DLL_PROCESS_DETACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- break;
- }
- return true;
-}
bgstack15