Index: win32.c =================================================================== --- win32.c (revision 37401) +++ win32.c (working copy) @@ -22,7 +22,7 @@ #include "mangle.h" #define REALPLAYER -//#define LOADLIB_TRY_NATIVE +#define LOADLIB_TRY_NATIVE /* Hack to make sure the correct function declaration in com.h is used when * this file is built for the test applications with WIN32_LOADER disabled. */ @@ -552,6 +552,8 @@ #define MODULE_HANDLE_ole32 ((HMODULE)0x127) #define MODULE_HANDLE_winmm ((HMODULE)0x128) #define MODULE_HANDLE_psapi ((HMODULE)0x129) +#define MODULE_HANDLE_atl90 ((HMODULE)0x130) +#define MODULE_HANDLE_msvcr90 ((HMODULE)0x131) // Fake PE header, since some software (and the Microsoft CRT v8 and newer) // assume GetModuleHandle(NULL) returns a pointer to a PE header. @@ -2559,7 +2561,12 @@ return MODULE_HANDLE_winmm; if (strcasecmp(name, "psapi.dll") == 0 || strcasecmp(name, "psapi") == 0) return MODULE_HANDLE_psapi; + if (strcasecmp(name, "atl90.dll") == 0 || strcasecmp(name, "atl90") == 0) + return MODULE_HANDLE_atl90; + if (strcasecmp(name, "msvcr90.dll") == 0 || strcasecmp(name, "msvcr90") == 0) + return MODULE_HANDLE_msvcr90; + result=LoadLibraryA(name); dbgprintf("Returned LoadLibraryA(0x%x='%s'), codec_path=%s => 0x%x\n", name, name, codec_path, result); @@ -2604,6 +2611,10 @@ result=LookupExternalByName("winmm.dll", name); break; case MODULE_HANDLE_psapi: result=LookupExternalByName("psapi.dll", name); break; + case MODULE_HANDLE_atl90: + result=LookupExternalByName("atl90.dll", name); break; + case MODULE_HANDLE_msvcr90: + result=LookupExternalByName("msvcr90.dll", name); break; default: result=GetProcAddress(mod, name); } @@ -5113,6 +5124,27 @@ return 0; } +static int exp_encode_pointer(void *ptr) +{ + dbgprintf("_encode_pointer (0x%08x)\n", ptr); + return 0; +} + +static int exp_lock(void *ptr) +{ + dbgprintf("_lock (0x%08x)\n", ptr); + return 0; +} + +static int exp_unlock(void *ptr) +{ + dbgprintf("_unlock (0x%08x)\n", ptr); + return 0; +} + + + + /* Fake implementation of sdt::_Lockit::_Lockit(void) from msvcp60.dll Needed by SCLS.DLL */ static int exp_0Lockit_dummy(void) @@ -5139,6 +5171,7 @@ return p; } + static DWORD WINAPI expGetThreadLocale(void) { return 0; @@ -5556,6 +5589,13 @@ #endif }; +static const struct exports exp_atl90[]={ + FF(_initterm_e, -1) + FF(_initterm, -1) + FF(memset,-1) +}; + + /* realplayer8: DLL Name: PNCRT.dll vma: Hint/Ord Member-Name @@ -5635,6 +5675,80 @@ {"??3@YAXPAX@Z", -1, expdelete} }; +static const struct exports exp_msvcr90[]={ + FF(_lock, -1) + FF(_unlock, -1) + FF(malloc, -1) + FF(_initterm, -1) + FF(_initterm_e, -1) + FF(_encode_pointer, -1) + FF(_decode_pointer, -1) + FF(__dllonexit, -1) + FF(_snprintf,-1) + FF(free, -1) + {"??3@YAXPAX@Z", -1, expdelete}, + {"??2@YAPAXI@Z", -1, expnew}, + {"??_U@YAPAXI@Z", -1, expnew}, + + +{"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, + {"_winver",-1,(void*)&_winver}, + FF(strrchr, -1) + FF(strchr, -1) + FF(strlen, -1) + FF(strcpy, -1) + FF(strncpy, -1) + FF(wcscpy, -1) + FF(strcmp, -1) + FF(strncmp, -1) + FF(strcat, -1) + FF(_stricmp,-1) + FF(_strdup,-1) + FF(_setjmp3,-1) + FF(isalnum, -1) + FF(isspace, -1) + FF(isalpha, -1) + FF(isdigit, -1) + FF(memmove, -1) + FF(memcmp, -1) + FF(memset, -1) + FF(memcpy, -1) + FF(time, -1) + FF(rand, -1) + FF(srand, -1) + FF(log10, -1) + FF(pow, -1) + FF(cos, -1) + FF(_ftol,-1) + FF(_CIpow,-1) + FF(_CIcos,-1) + FF(_CIsin,-1) + FF(_CIsqrt,-1) + FF(ldexp,-1) + FF(frexp,-1) + FF(sprintf,-1) + FF(sscanf,-1) + FF(fopen,-1) + FF(fprintf,-1) + FF(printf,-1) + FF(getenv,-1) + FF(floor,-1) +/* needed by frapsvid.dll */ + {"strstr",-1,(char *)&strstr}, + {"qsort",-1,(void *)&qsort}, + FF(_EH_prolog,-1) + FF(calloc,-1) + {"ceil",-1,(void*)&ceil}, +/* needed by imagepower mjpeg2k */ + {"clock",-1,(void*)&clock}, + {"memchr",-1,(void*)&memchr}, + {"vfprintf",-1,(void*)&vfprintf}, +// {"realloc",-1,(void*)&realloc}, + FF(realloc,-1) + {"puts",-1,(void*)&puts} +}; + + static const struct exports exp_msvcp60[]={ {"??0_Lockit@std@@QAE@XZ", -1, exp_0Lockit_dummy}, {"??1_Lockit@std@@QAE@XZ", -1, exp_1Lockit_dummy} @@ -5678,6 +5792,8 @@ LL(msvcr80) LL(msvcp60) LL(msvcr100) + LL(atl90) + LL(msvcr90) }; static WIN_BOOL WINAPI ext_stubs(void) @@ -5757,7 +5873,7 @@ #ifndef LOADLIB_TRY_NATIVE /* hack for truespeech and vssh264*/ - if (!strcmp(library, "tsd32.dll") || !strcmp(library,"vssh264dec.dll") || !strcmp(library,"LCMW2.dll") || !strcmp(library,"VDODEC32.dll")) + if (!strcmp(library, "tsd32.dll") || !strcmp(library,"vssh264dec.dll") || !strcmp(library,"LCMW2.dll") || !strcmp(library,"VDODEC32.dll") || !strcmp(library,"G729DecoderDMO.dll")) #endif /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ {