1 /** 2 * Windows DLL entry points. 3 * 4 * Copyright: Copyright Auburn Sounds 2015-2016. 5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 6 * Authors: Guillaume Piolat 7 */ 8 module dplug.client.dllmain; 9 10 // Dynamic libraries entry point. 11 // Basically only needed on Windows, on OSX we have other entry points. 12 13 version = doNotUseRuntime; 14 15 version(Windows) 16 { 17 version(doNotUseRuntime) 18 { 19 template DLLEntryPoint() 20 { 21 const char[] DLLEntryPoint = q{ 22 import std.c.windows.windows; 23 import core.sys.windows.dll; 24 extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved) 25 { 26 return true; 27 } 28 }; 29 } 30 } 31 else 32 { 33 template DLLEntryPoint() 34 { 35 const char[] DLLEntryPoint = q{ 36 import std.c.windows.windows; 37 import core.sys.windows.dll; 38 39 extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved) 40 { 41 switch (ulReason) 42 { 43 case DLL_PROCESS_ATTACH: 44 dll_process_attach(hInstance, false); 45 break; 46 47 case DLL_PROCESS_DETACH: 48 dll_process_detach(hInstance, true); 49 break; 50 51 case DLL_THREAD_ATTACH: 52 dll_thread_attach(false, true); 53 break; 54 55 case DLL_THREAD_DETACH: 56 dll_thread_detach(false, true); 57 break; 58 59 default: 60 break; 61 } 62 return true; 63 } 64 }; 65 } 66 } 67 } 68 else 69 { 70 template DLLEntryPoint() 71 { 72 const char[] DLLEntryPoint = ``; 73 } 74 } 75