Subversion Repositories filter_foundry

Rev

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);