BOOL WINAPI SKPlugIn_Init (HMODULE hModSpecialK) { wchar_t wszSKFileName [ MAX_PATH ] = { L'\0' }; wszSKFileName [MAX_PATH - 1] = L'\0'; GetModuleFileName (hModSpecialK, wszSKFileName, MAX_PATH - 1); injector_dll = wszSKFileName; hInjectorDLL = hModSpecialK; #if 0 CreateThread ( nullptr, 0, DllThread, nullptr, 0x00, nullptr ); #else // Not really a thread now is it? :P DllThread (nullptr); #endif return TRUE; }
BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReasonForCall, LPVOID lpReserved) { FINT4 zg; FINT4 iReasonForCall; BOOL bReturn = TRUE; switch (dwReasonForCall) { case DLL_PROCESS_ATTACH: hDllInstance = hInstance; UpdateResourceTable(1, hInstance); iReasonForCall = PROCESS_ATTACH; bReturn = DllProcess(&iReasonForCall, &zg); break; case DLL_THREAD_ATTACH: iReasonForCall = THREAD_ATTACH; bReturn = DllThread(&iReasonForCall, &zg); break; case DLL_THREAD_DETACH: iReasonForCall = THREAD_DETACH; bReturn = DllThread(&iReasonForCall, &zg); break; case DLL_PROCESS_DETACH: iReasonForCall = PROCESS_DETACH; bReturn = DllProcess(&iReasonForCall, &zg); UpdateResourceTable(2, hInstance); break; } return bReturn; }