Win2003R2 x64和Win7 x64上的文件系统重定向器的不同行为

时间:2013-07-01 16:05:11

标签: c++ windows winapi 64-bit wow64

我有以下用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是依赖于iphlpapi.dll的x86动态库映像。

当我在Windows 2003 R2 x64 SP2下运行此程序时,我得到输出“Failed with error code = 193”(193是ERROR_BAD_EXE_FORMAT)和系统消息框,其中包含未找到iphlpapi.dll的消息。 Process Monitor显示在System32文件夹下搜索了iphlpapi.dll。

当我在Windows 7 x64 SP1下运行相同的可执行文件(和mymodule.dll也相同)时,我得到输出“Succeeded”,进程监视器显示iphlpapi.dll在SysWOW64下搜索并成功找到。

为什么这两个x64操作系统的行为有所不同?

0 个答案:

没有答案