Различное поведение перенаправителя файловой системы на Win2003R2 x64 и Win7 x64

У меня есть следующее минимальное приложение, скомпилированное с конфигурацией x86, которое иллюстрирует мой вопрос:

int _tmain(int argc, _TCHAR* argv[])
{
LPVOID oldValue = NULL;
BOOL result = ::Wow64DisableWow64FsRedirection(&oldValue);
_ASSERTE(result);

HMODULE moduleHandle = ::LoadLibrary(L".\\mymodule.dll");
if (moduleHandle != NULL)
{
std::wcout << L"Succeeded";
}
else
{
DWORD errorCode = ::GetLastError();
std::wcout << L"Failed with error code = " << errorCode;
}

return 0;
}

mymodule.dll — это динамический образ библиотеки x86, который зависит от iphlpapi.dll.

Когда я запускаю эту программу под Windows 2003 R2 x64 SP2, я получаю вывод «Failed with error error = 193» (193 is ERROR_BAD_EXE_FORMAT) и системное сообщение с сообщением, что iphlpapi.dll не найден.
Монитор процессов показывает, что iphlpapi.dll был найден в папке System32.

Когда я запускаю тот же исполняемый файл (и mymodule.dll также то же самое) под Windows 7 x64 SP1, я получаю вывод «Успешно», и Process Monitor показывает, что iphlpapi.dll был найден в SysWOW64 и успешно найден.

Почему поведение отличается на этих двух x64 ОС?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]