Rev 433 | Rev 440 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 433 | Rev 436 | ||
---|---|---|---|
Line 22... | Line 22... | ||
22 | 22 | ||
23 | #include "file_compat.h" |
23 | #include "file_compat.h" |
24 | 24 | ||
25 | #include <string.h> |
25 | #include <string.h> |
26 | 26 | ||
27 | static UINT16 parm_id; |
- | |
28 | - | ||
29 | static BOOL CALLBACK enumnames(HMODULE hModule, LPCTSTR lpszType, |
27 | static BOOL CALLBACK enum_find_resname(HMODULE hModule, LPCTSTR lpszType, |
30 | LPTSTR lpszName, LONG_PTR lParam) |
28 | LPTSTR lpszName, LONG_PTR lParam) |
31 | { |
29 | { |
32 | UNREFERENCED_PARAMETER(lParam); // TODO: Pass parm_id as pointer in lParam |
- | |
33 | UNREFERENCED_PARAMETER(hModule); |
30 | UNREFERENCED_PARAMETER(hModule); |
34 | UNREFERENCED_PARAMETER(lpszType); |
31 | UNREFERENCED_PARAMETER(lpszType); |
35 | 32 | ||
36 | if (IS_INTRESOURCE(lpszName)) { |
33 | if (IS_INTRESOURCE(lpszName)) { |
- | 34 | UINT16* pparm_id = (UINT16*)lParam; |
|
37 | parm_id = (UINT16)((intptr_t)lpszName & 0xFFFF); |
35 | *pparm_id = (UINT16)((intptr_t)lpszName & 0xFFFF); |
38 | return false; // we only want the first one |
36 | return false; // we only want the first one |
39 | } |
37 | } |
40 | else return true; |
38 | else return true; |
41 | } |
39 | } |
42 | 40 | ||
43 | Boolean readPARMresource(HMODULE hm, char** reason, int readobfusc) { |
41 | Boolean readPARMresource(HMODULE hm, char** reason, int readobfusc) { |
44 | HRSRC resinfo; |
42 | HRSRC resinfo; |
45 | HANDLE h; |
43 | HANDLE h; |
46 | Ptr pparm; |
44 | Ptr pparm; |
47 | 45 | ||
48 | parm_id = 1; |
46 | UINT16 parm_id = 1; |
49 | EnumResourceNames(hm, PARM_TYPE, enumnames, 0); // callback function enumnames() will find the actual found parm_id |
47 | EnumResourceNames(hm, PARM_TYPE, enum_find_resname, (LONG_PTR)&parm_id); // callback function enum_find_resname() will find the actual found parm_id |
50 | 48 | ||
51 | // load first PARM resource |
49 | // load first PARM resource |
52 | if ((resinfo = FindResource(hm, MAKEINTRESOURCE(parm_id), PARM_TYPE))) { |
50 | if ((resinfo = FindResource(hm, MAKEINTRESOURCE(parm_id), PARM_TYPE))) { |
53 | if ((h = LoadResource(hm, resinfo)) && (pparm = (Ptr)LockResource(h))) { |
51 | if ((h = LoadResource(hm, resinfo)) && (pparm = (Ptr)LockResource(h))) { |
54 | int res = readPARM(&gdata->parm, pparm); |
52 | int res = readPARM(&gdata->parm, pparm); |