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