Может ли процесс WoW64 создать / fork / etc чистый процесс x64? - PullRequest
2 голосов
/ 14 июня 2010

Я хочу вызвать x64 exe из x86 process / exe, например:

  1. открыть x86 cmd:% windir% \ SysWoW64 \ cmd.exe
  2. Запустить блокнот: notepad.exe <- это будет блокнот x86 (согласно taskmanager = *) </li>

Можно ли запустить блокнот x64 из x86 cmd?

Моя проблема в том, что процесс, который я выполняю, должен работать как x64, я не хочу, чтобы он работал как x86 (WoW), так как он действует по-другому ... это то, как он был запрограммирован, и я не могу изменить :-( и мой exe x86 ...

Чтобы упростить мой вопрос: может ли процесс WoW создать / fork / etc чистый процесс x64?

большое спасибо

YB

1 Ответ

3 голосов
/ 14 июня 2010

Да, это возможно.Перед запуском блокнота вам нужно отключить перенаправление WOW64, чтобы запустить правильный исполняемый файл.

Редактировать: теперь вы пояснили, что на самом деле это не Блокнот, а ваш собственный 64-битный исполняемый файл, этот код должен запускатьсяэто как настоящий 64-битный процесс:

STARTUPINFO si;
PROCESS_INFORMATION pi;
bool_t bResult = FALSE;

ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;

bResult = CreateProcess(NULL, "foo.exe", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

if (bResult)
{
    WaitForSingleObject(pi.hThread, INFINITE);

    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}
...