- Timestamp:
- Jun 13, 2001, 4:19:34 AM (24 years ago)
- Location:
- trunk/src/win16ldr
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win16ldr/odindll.c
r5954 r5978 9 9 BOOL GetPEOptionalHeader (LPVOID lpFile, PIMAGE_OPTIONAL_HEADER pHeader); 10 10 11 #ifdef __WATCOMC__ 12 typedef DWORD (FAR * WINAPI * FUNC_GetVersion)(void); 13 typedef UINT (FAR * WINAPI * FUNC_WinExec)(LPCSTR, UINT); 14 #else 11 15 typedef DWORD (FAR * WINAPI FUNC_GetVersion)(void); 12 typedef UINT (FAR *WINAPI FUNC_WinExec)(LPCSTR, UINT); 16 typedef UINT (FAR * WINAPI FUNC_WinExec)(LPCSTR, UINT); 17 #endif 13 18 14 19 BYTE oldcodeVER; … … 26 31 char szPEPath[256] = {0}; 27 32 28 //***************************************************************************************** 29 //***************************************************************************************** 33 //***************************************************************************************** 34 //***************************************************************************************** 30 35 int FAR _loadds CALLBACK LibMain(HINSTANCE hinst, WORD wDataSeg, WORD cbHeap, LPSTR lpszCmdLine) 31 36 { … … 46 51 oldcodeVER = *jumpVER; 47 52 olddataVER = *addr; 48 *jumpVER = 0xEA; //jmp 53 *jumpVER = 0xEA; //jmp 49 54 *addr = (DWORD)&MyGetVersion; 50 55 … … 57 62 oldcodeEXEC = *jumpEXEC; 58 63 olddataEXEC = *addr; 59 *jumpEXEC = 0xEA; //jmp 64 *jumpEXEC = 0xEA; //jmp 60 65 *addr = (DWORD)&MyWinExec; 61 66 } 62 67 return 1; 63 68 } 64 //***************************************************************************************** 65 //***************************************************************************************** 69 //***************************************************************************************** 70 //***************************************************************************************** 66 71 int FAR _loadds PASCAL WEP(int entry) 67 72 { … … 83 88 return 1; 84 89 } 85 //***************************************************************************************** 86 //***************************************************************************************** 90 //***************************************************************************************** 91 //***************************************************************************************** 87 92 DWORD FAR PASCAL MyGetVersion() 88 93 { 89 94 return 0x00005F0C; 90 95 } 91 //***************************************************************************************** 92 //***************************************************************************************** 96 //***************************************************************************************** 97 //***************************************************************************************** 93 98 UINT FAR _loadds PASCAL MyWinExec(LPCSTR lpszCmdLine, UINT fuShowCmd) 94 99 { … … 106 111 HGLOBAL hMem1 = 0, hMem2 = 0, hMem3 = 0, hMem4 = 0; 107 112 BOOL fFail = TRUE; 108 113 109 114 of.cBytes = sizeof(OFSTRUCT); 110 115 … … 170 175 171 176 calloldfunc: 172 if(hMem4) { 177 if(hMem4) { 173 178 GlobalUnlock(hMem4); 174 179 GlobalFree(hMem4); 175 180 } 176 if(hMem3) { 181 if(hMem3) { 177 182 GlobalUnlock(hMem3); 178 183 GlobalFree(hMem3); 179 184 } 180 if(hMem2) { 185 if(hMem2) { 181 186 GlobalUnlock(hMem2); 182 187 GlobalFree(hMem2); 183 188 } 184 189 if(hFile) 185 _lclose(hFile); 190 _lclose(hFile); 186 191 187 192 addr = (DWORD FAR *)(jumpEXEC + 1); … … 202 207 Yield(); 203 208 tickcount2 = GetTickCount(); 204 } 209 } 205 210 while(tickcount2 - tickcount1 < 2000UL); 206 211 } 207 212 } 208 213 209 *jumpEXEC = 0xEA; //jmp 214 *jumpEXEC = 0xEA; //jmp 210 215 *addr = (DWORD)&MyWinExec; 211 216 … … 221 226 { 222 227 if(*(WORD *)lpFile == IMAGE_DOS_SIGNATURE && 223 *(DWORD *)PE_HEADER (lpFile) == IMAGE_NT_SIGNATURE) 228 *(DWORD *)PE_HEADER (lpFile) == IMAGE_NT_SIGNATURE) 224 229 { 225 230 memcpy ((LPVOID)pHeader, PEHEADEROFF (lpFile), sizeof (IMAGE_FILE_HEADER)); … … 233 238 { 234 239 if(*(WORD *)lpFile == IMAGE_DOS_SIGNATURE && 235 *(DWORD *)PE_HEADER (lpFile) == IMAGE_NT_SIGNATURE) 240 *(DWORD *)PE_HEADER (lpFile) == IMAGE_NT_SIGNATURE) 236 241 { 237 242 memcpy ((LPVOID)pHeader, OPTHEADEROFF (lpFile), sizeof (IMAGE_OPTIONAL_HEADER)); … … 240 245 else return FALSE; 241 246 } 242 //***************************************************************************************** 243 //***************************************************************************************** 247 //***************************************************************************************** 248 //*****************************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.