comparison loader/win32.c @ 22476:50225df605b5

Support function lookup via ordinal
author reimar
date Thu, 08 Mar 2007 22:29:00 +0000
parents 9edc4cfaeaed
children 15ca243429f9
comparison
equal deleted inserted replaced
22475:9edc4cfaeaed 22476:50225df605b5
2433 case MODULE_HANDLE_winmm: 2433 case MODULE_HANDLE_winmm:
2434 result=LookupExternalByName("winmm.dll", name); break; 2434 result=LookupExternalByName("winmm.dll", name); break;
2435 default: 2435 default:
2436 result=GetProcAddress(mod, name); 2436 result=GetProcAddress(mod, name);
2437 } 2437 }
2438 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result); 2438 if((unsigned int)name > 0xffff)
2439 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result);
2440 else
2441 dbgprintf("GetProcAddress(0x%x, '%d') => 0x%x\n", mod, (int)name, result);
2439 return result; 2442 return result;
2440 } 2443 }
2441 2444
2442 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr, 2445 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr,
2443 long flProtect, long dwMaxHigh, 2446 long flProtect, long dwMaxHigh,
5417 if(library==0) 5420 if(library==0)
5418 { 5421 {
5419 printf("ERROR: library=0\n"); 5422 printf("ERROR: library=0\n");
5420 return (void*)ext_unknown; 5423 return (void*)ext_unknown;
5421 } 5424 }
5422 if(name==0) 5425 if((unsigned long)name<=0xffff)
5423 { 5426 {
5424 printf("ERROR: name=0\n"); 5427 return LookupExternal(library, (int)name);
5425 return (void*)ext_unknown;
5426 } 5428 }
5427 dbgprintf("External func %s:%s\n", library, name); 5429 dbgprintf("External func %s:%s\n", library, name);
5428 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) 5430 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++)
5429 { 5431 {
5430 if(strcasecmp(library, libraries[i].name)) 5432 if(strcasecmp(library, libraries[i].name))