MCPcopy Create free account
hub / github.com/LegacyUpdate/LegacyUpdate / IsWOW64

Function IsWOW64

nsisplugin/Exec.c:110–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108}
109
110static BOOL IsWOW64(void) {
111#ifdef _WIN64
112 return FALSE;
113#else
114 typedef BOOL (WINAPI*ISWOW64PROCESS)(HANDLE, BOOL*);
115 ISWOW64PROCESS pfIsWow64Process;
116 typedef BOOL (WINAPI*ISWOW64PROCESS2)(HANDLE, USHORT*, USHORT*);
117 ISWOW64PROCESS2 pfIsWow64Process2;
118 HANDLE hProcess = GetCurrentProcess();
119 HMODULE hK32 = GetModuleHandleA("KERNEL32");
120 UINT_PTR retval;
121 USHORT appmach, image_file_machine_unknown = 0;
122 CHAR funcnam[16]
123#if defined(_MSC_VER) && (_MSC_VER-0 <= 1400)
124 = "IsWow64Process2"; // MOVSD * 4
125#else
126 ; lstrcpyA(funcnam, "IsWow64Process2");
127#endif
128 pfIsWow64Process2 = (ISWOW64PROCESS2) GetProcAddress(hK32, funcnam);
129 if (pfIsWow64Process2 && pfIsWow64Process2(hProcess, &appmach, NULL)) {
130 retval = image_file_machine_unknown != appmach;
131 }
132 else {
133 BOOL wow64;
134 pfIsWow64Process = (ISWOW64PROCESS) GetProcAddress(hK32, (funcnam[14] = '\0', funcnam));
135 retval = (UINT_PTR) pfIsWow64Process;
136 if (pfIsWow64Process && (retval = pfIsWow64Process(hProcess, &wow64))) {
137 retval = wow64;
138 }
139 }
140 return (BOOL) (UINT) retval;
141#endif
142}
143
144// Tim Kosse's LogMessage
145#ifdef UNICODE

Callers 1

ExecScriptFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected