Changeset 9617 for trunk/src/kernel32/wprocess.cpp
- Timestamp:
- Jan 5, 2003, 1:31:26 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/wprocess.cpp
r9540 r9617 1 /* $Id: wprocess.cpp,v 1.16 8 2002-12-20 12:40:44sandervl Exp $ */1 /* $Id: wprocess.cpp,v 1.169 2003-01-05 12:31:26 sandervl Exp $ */ 2 2 3 3 /* … … 2286 2286 } 2287 2287 //****************************************************************************** 2288 // ODIN_SetProcAddress: Override a dll export 2289 // 2290 // Parameters: 2291 // HMODULE hModule Module handle 2292 // LPCSTR lpszProc Export name or ordinal 2293 // FARPROC pfnNewProc New export function address 2294 // 2295 // Returns: Success -> old address of export 2296 // Failure -> -1 2297 // 2298 //****************************************************************************** 2299 FARPROC WIN32API ODIN_SetProcAddress(HMODULE hModule, LPCSTR lpszProc, 2300 FARPROC pfnNewProc) 2301 { 2302 Win32ImageBase *winmod; 2303 FARPROC proc; 2304 ULONG ulAPIOrdinal; 2305 2306 if(hModule == 0 || hModule == -1 || (WinExe && hModule == WinExe->getInstanceHandle())) { 2307 winmod = WinExe; 2308 } 2309 else winmod = (Win32ImageBase *)Win32DllBase::findModule((HINSTANCE)hModule); 2310 2311 if(winmod) { 2312 ulAPIOrdinal = (ULONG)lpszProc; 2313 if (ulAPIOrdinal <= 0x0000FFFF) { 2314 proc = (FARPROC)winmod->setApi((int)ulAPIOrdinal, (ULONG)pfnNewProc); 2315 } 2316 else proc = (FARPROC)winmod->setApi((char *)lpszProc, (ULONG)pfnNewProc); 2317 if(proc == 0) { 2318 #ifdef DEBUG 2319 if(ulAPIOrdinal <= 0x0000FFFF) { 2320 dprintf(("ODIN_SetProcAddress %x %x not found!", hModule, ulAPIOrdinal)); 2321 } 2322 else dprintf(("ODIN_SetProcAddress %x %s not found!", hModule, lpszProc)); 2323 #endif 2324 SetLastError(ERROR_PROC_NOT_FOUND); 2325 } 2326 if(HIWORD(lpszProc)) 2327 dprintf(("KERNEL32: ODIN_SetProcAddress %s from %X returned %X\n", lpszProc, hModule, proc)); 2328 else dprintf(("KERNEL32: ODIN_SetProcAddress %x from %X returned %X\n", lpszProc, hModule, proc)); 2329 2330 SetLastError(ERROR_SUCCESS); 2331 return proc; 2332 } 2333 SetLastError(ERROR_INVALID_HANDLE); 2334 return (FARPROC)-1; 2335 } 2336 //****************************************************************************** 2288 2337 //Retrieve the version 2289 2338 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.