Subversion Repositories filter_foundry

Rev

Rev 419 | Rev 462 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 419 Rev 444
Line 30... Line 30...
30
#else
30
#else
31
        HMODULE hLib;
31
        HMODULE hLib;
32
        f_GetVersionEx fGetVersionEx;
32
        f_GetVersionEx fGetVersionEx;
33
        BOOL res;
33
        BOOL res;
34
 
34
 
35
        hLib = LoadLibraryA("KERNEL32.DLL");
35
        hLib = LoadLibrary(TEXT("KERNEL32.DLL"));
36
        if (!hLib) return 0;
36
        if (!hLib) return 0;
37
        fGetVersionEx = (f_GetVersionEx)(void*)GetProcAddress(hLib, "GetVersionExA");
37
        fGetVersionEx = (f_GetVersionEx)(void*)GetProcAddress(hLib, "GetVersionExA");
38
        if (fGetVersionEx != 0) {
38
        if (fGetVersionEx != 0) {
39
                OSVERSIONINFO osv;
39
                OSVERSIONINFOA osv;
40
                osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
40
                osv.dwOSVersionInfoSize = sizeof(osv);
41
                res = fGetVersionEx(&osv);
41
                res = fGetVersionEx(&osv);
42
                FreeLibrary(hLib);
42
                FreeLibrary(hLib);
43
                // Windows NT 3.51 does implement GetVersionExA() and UpdateResourceA(), but it doesn't know about 64 bit images.
43
                // Windows NT 3.51 does implement GetVersionExA() and UpdateResourceA(), but it doesn't know about 64 bit images.
44
                // Windows NT 4.0 does implement UpdateResourceA(), and it can handle 64 bit images
44
                // Windows NT 4.0 does implement UpdateResourceA(), and it can handle 64 bit images
45
                return res && osv.dwMajorVersion >= 4 && osv.dwPlatformId == VER_PLATFORM_WIN32_NT;
45
                return res && osv.dwMajorVersion >= 4 && osv.dwPlatformId == VER_PLATFORM_WIN32_NT;
Line 59... Line 59...
59
ULONGLONG _GetTickCount64() {
59
ULONGLONG _GetTickCount64() {
60
        HMODULE hLib;
60
        HMODULE hLib;
61
        f_GetTickCount64 fGetTickCount64;
61
        f_GetTickCount64 fGetTickCount64;
62
        ULONGLONG res;
62
        ULONGLONG res;
63
 
63
 
64
        hLib = LoadLibraryA("KERNEL32.DLL");
64
        hLib = LoadLibrary(TEXT("KERNEL32.DLL"));
65
        if (!hLib) return 0;
65
        if (!hLib) return 0;
66
        fGetTickCount64 = (f_GetTickCount64)(void*)GetProcAddress(hLib, "GetTickCount64");
66
        fGetTickCount64 = (f_GetTickCount64)(void*)GetProcAddress(hLib, "GetTickCount64");
67
        if (fGetTickCount64 != 0) {
67
        if (fGetTickCount64 != 0) {
68
                res = fGetTickCount64();
68
                res = fGetTickCount64();
69
                FreeLibrary(hLib);
69
                FreeLibrary(hLib);
Line 75... Line 75...
75
        return res;
75
        return res;
76
}
76
}
77
 
77
 
78
// ---------------------------------
78
// ---------------------------------
79
 
79
 
80
HANDLE _BeginUpdateResource/*A*/(
80
HANDLE _BeginUpdateResource(
81
        LPCSTR pFileName,
81
        LPCTSTR pFileName,
82
        BOOL   bDeleteExistingResources
82
        BOOL    bDeleteExistingResources
83
) {
83
) {
-
 
84
        #ifdef UNICODE
-
 
85
        return BeginUpdateResource(pFileName, bDeleteExistingResources);
-
 
86
        #else
84
        if (Implements3264ResourceAPI()) {
87
        if (Implements3264ResourceAPI()) {
85
                return BeginUpdateResourceA(pFileName, bDeleteExistingResources);
88
                return BeginUpdateResourceA(pFileName, bDeleteExistingResources);
86
        } else {
89
        } else {
87
                return WineBeginUpdateResourceA(pFileName, bDeleteExistingResources);
90
                return WineBeginUpdateResourceA(pFileName, bDeleteExistingResources);
88
        }
91
        }
-
 
92
        #endif
89
}
93
}
90
 
94
 
91
// ---------------------------------
95
// ---------------------------------
92
 
96
 
93
BOOL _EndUpdateResource/*A*/(
97
BOOL _EndUpdateResource(
94
        HANDLE hUpdate,
98
        HANDLE hUpdate,
95
        BOOL   fDiscard
99
        BOOL   fDiscard
96
) {
100
) {
-
 
101
        #ifdef UNICODE
-
 
102
        return EndUpdateResource(hUpdate, fDiscard);
-
 
103
        #else
97
        if (Implements3264ResourceAPI()) {
104
        if (Implements3264ResourceAPI()) {
98
                return EndUpdateResourceA(hUpdate, fDiscard);
105
                return EndUpdateResourceA(hUpdate, fDiscard);
99
        } else {
106
        } else {
100
                return WineEndUpdateResourceA(hUpdate, fDiscard);
107
                return WineEndUpdateResourceA(hUpdate, fDiscard);
101
        }
108
        }
-
 
109
        #endif
102
}
110
}
103
 
111
 
104
// ---------------------------------
112
// ---------------------------------
105
 
113
 
106
BOOL _UpdateResource/*A*/(
114
BOOL _UpdateResource(
107
        HANDLE hUpdate,
115
        HANDLE  hUpdate,
108
        LPCSTR lpType,
116
        LPCTSTR lpType,
109
        LPCSTR lpName,
117
        LPCTSTR lpName,
110
        WORD   wLanguage,
118
        WORD    wLanguage,
111
        LPVOID lpData,
119
        LPVOID  lpData,
112
        DWORD  cb
120
        DWORD   cb
113
) {
121
) {
-
 
122
        #ifdef UNICODE
-
 
123
        return UpdateResource(hUpdate, lpType, lpName, wLanguage, lpData, cb);
-
 
124
        #else
114
        if (Implements3264ResourceAPI()) {
125
        if (Implements3264ResourceAPI()) {
115
                return UpdateResourceA(hUpdate, lpType, lpName, wLanguage, lpData, cb);
126
                return UpdateResourceA(hUpdate, lpType, lpName, wLanguage, lpData, cb);
116
        } else {
127
        } else {
117
                return WineUpdateResourceA(hUpdate, lpType, lpName, wLanguage, lpData, cb);
128
                return WineUpdateResourceA(hUpdate, lpType, lpName, wLanguage, lpData, cb);
118
        }
129
        }
-
 
130
        #endif
119
}
131
}
120
 
132
 
121
typedef void(__stdcall* f_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
133
typedef void(__stdcall* f_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
122
void _GetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo) {
134
void _GetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo) {
123
        HMODULE hLib;
135
        HMODULE hLib;
124
        f_GetNativeSystemInfo fGetNativeSystemInfo;
136
        f_GetNativeSystemInfo fGetNativeSystemInfo;
125
 
137
 
126
        hLib = LoadLibraryA("KERNEL32.DLL");
138
        hLib = LoadLibrary(TEXT("KERNEL32.DLL"));
127
        if (!hLib) return;
139
        if (!hLib) return;
128
        fGetNativeSystemInfo = (f_GetNativeSystemInfo)(void*)GetProcAddress(hLib, "GetNativeSystemInfo");
140
        fGetNativeSystemInfo = (f_GetNativeSystemInfo)(void*)GetProcAddress(hLib, "GetNativeSystemInfo");
129
        if (fGetNativeSystemInfo != 0) {
141
        if (fGetNativeSystemInfo != 0) {
130
                fGetNativeSystemInfo(lpSystemInfo);
142
                fGetNativeSystemInfo(lpSystemInfo);
131
                FreeLibrary(hLib);
143
                FreeLibrary(hLib);
Line 139... Line 151...
139
BOOL _ImageRemoveCertificate(HANDLE FileHandle, DWORD Index) {
151
BOOL _ImageRemoveCertificate(HANDLE FileHandle, DWORD Index) {
140
        HMODULE hLib;
152
        HMODULE hLib;
141
        f_ImageRemoveCertificate fImageRemoveCertificate;
153
        f_ImageRemoveCertificate fImageRemoveCertificate;
142
        BOOL res = FALSE;
154
        BOOL res = FALSE;
143
 
155
 
144
        hLib = LoadLibraryA("IMAGEHLP.DLL");
156
        hLib = LoadLibrary(TEXT("IMAGEHLP.DLL"));
145
        if (!hLib) return FALSE;
157
        if (!hLib) return FALSE;
146
        fImageRemoveCertificate = (f_ImageRemoveCertificate)(void*)GetProcAddress(hLib, "ImageRemoveCertificate");
158
        fImageRemoveCertificate = (f_ImageRemoveCertificate)(void*)GetProcAddress(hLib, "ImageRemoveCertificate");
147
        if (fImageRemoveCertificate != 0) {
159
        if (fImageRemoveCertificate != 0) {
148
                res = fImageRemoveCertificate(FileHandle, Index);
160
                res = fImageRemoveCertificate(FileHandle, Index);
149
                FreeLibrary(hLib);
161
                FreeLibrary(hLib);