(Wow64DisableWow64FsRedirection): Remove.
(Wow64RevertWow64FsRedirection): Remove.
* ntdll.h (enum _PROCESSINFOCLASS): Define ProcessWow64Information.
* init.cc (respawn_wow64_process): Use NtQueryInformationProcess to
get WOW64 state.
* wincap.cc (wincapc::init): Ditto.
* wincap.h (wincapc::wow64): Change type to ULONG.
+2008-04-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * autoload.cc (IsWow64Process): Remove.
+ (Wow64DisableWow64FsRedirection): Remove.
+ (Wow64RevertWow64FsRedirection): Remove.
+ * ntdll.h (enum _PROCESSINFOCLASS): Define ProcessWow64Information.
+ * init.cc (respawn_wow64_process): Use NtQueryInformationProcess to
+ get WOW64 state.
+ * wincap.cc (wincapc::init): Ditto.
+ * wincap.h (wincapc::wow64): Change type to ULONG.
+
2008-04-27 Corinna Vinschen <corinna@vinschen.de>
* wincap.h (wincapc::wow64): Change type to BOOL.
LoadDLLfuncEx (FindVolumeClose, 4, kernel32, 1)
LoadDLLfuncEx (GetConsoleWindow, 0, kernel32, 1)
LoadDLLfuncEx (GetVolumeNameForVolumeMountPointA, 12, kernel32, 1)
-LoadDLLfuncEx (IsWow64Process, 8, kernel32, 1);
-LoadDLLfuncEx (Wow64DisableWow64FsRedirection, 4, kernel32, 1)
-LoadDLLfuncEx (Wow64RevertWow64FsRedirection, 4, kernel32, 1)
LoadDLLfunc (SHGetDesktopFolder, 4, shell32)
PROCESS_BASIC_INFORMATION pbi;
HANDLE parent;
- BOOL is_wow64_proc = TRUE; /* Opt on the safe side. */
+ ULONG wow64 = TRUE; /* Opt on the safe side. */
/* Unfortunately there's no simpler way to retrieve the
parent process in NT, as far as I know. Hints welcome. */
ret = NtQueryInformationProcess (GetCurrentProcess (),
ProcessBasicInformation,
- (PVOID) &pbi,
- sizeof pbi, NULL);
- if (ret == STATUS_SUCCESS
+ &pbi, sizeof pbi, NULL);
+ if (NT_SUCCESS (ret)
&& (parent = OpenProcess (PROCESS_QUERY_INFORMATION,
FALSE,
pbi.InheritedFromUniqueProcessId)))
{
- IsWow64Process (parent, &is_wow64_proc);
+ NtQueryInformationProcess (parent, ProcessWow64Information,
+ &wow64, sizeof wow64, NULL);
CloseHandle (parent);
}
/* The parent is a real 64 bit process? Respawn! */
- if (!is_wow64_proc)
+ if (!wow64)
{
PROCESS_INFORMATION pi;
STARTUPINFOW si;
ProcessVmCounters = 3,
ProcessTimes = 4,
ProcessSessionInformation = 24,
+ ProcessWow64Information = 26,
} PROCESSINFOCLASS;
typedef struct _DEBUG_BUFFER
#include "winsup.h"
#include "security.h"
+#include "ntdll.h"
/* Minimal set of capabilities which is equivalent to NT4. */
static NO_COPY wincaps wincap_unknown = {
if (has_osversioninfoex && version.wProductType != VER_NT_WORKSTATION)
((wincaps *)caps)->is_server = true;
- if (IsWow64Process (GetCurrentProcess (), &wow64) && !wow64)
+ if (NT_SUCCESS (NtQueryInformationProcess (GetCurrentProcess (),
+ ProcessWow64Information,
+ &wow64, sizeof wow64, NULL))
+ && !wow64)
{
((wincaps *)caps)->needs_count_in_si_lpres2 = false;
((wincaps *)caps)->has_restricted_stack_args = false;
{
OSVERSIONINFOEX version;
char osnam[40];
- BOOL wow64;
+ ULONG wow64;
void *caps;
public: