49 static char *possibleModules[] = {
56 BOOL CallModuleDllMain(
char *modName, DWORD dwReason);
63 void PyWinFreeze_ExeInit(
void)
66 for (modName = possibleModules;*modName;*modName++) {
68 CallModuleDllMain(*modName, DLL_PROCESS_ATTACH);
76 void PyWinFreeze_ExeTerm(
void)
80 for (modName = possibleModules+(
sizeof(possibleModules) /
sizeof(
char *))-2;
81 modName >= possibleModules;
84 CallModuleDllMain(*modName, DLL_PROCESS_DETACH);
88 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
92 case DLL_PROCESS_ATTACH:
95 for (modName = possibleModules;*modName;*modName++) {
96 BOOL ok = CallModuleDllMain(*modName, dwReason);
102 case DLL_PROCESS_DETACH:
106 for (modName = possibleModules+(
sizeof(possibleModules) /
sizeof(
char *))-2;
107 modName >= possibleModules;
109 CallModuleDllMain(*modName, DLL_PROCESS_DETACH);
116 BOOL CallModuleDllMain(
char *modName, DWORD dwReason)
118 BOOL (WINAPI * pfndllmain)(HINSTANCE, DWORD, LPVOID);
121 HMODULE hmod = GetModuleHandleW(NULL);
122 strcpy(funcName,
"_DllMain");
123 strcat(funcName, modName);
124 strcat(funcName,
"@12");
125 pfndllmain = (BOOL (WINAPI *)(HINSTANCE, DWORD, LPVOID))GetProcAddress(hmod, funcName);
126 if (pfndllmain==NULL) {
132 return (*pfndllmain)(hmod, dwReason, NULL);