GetModuleFileNameExA 32-битного приложения из 64-битного приложения ведет себя по-разному на Win7 по сравнению с Win Server 2012?
Вроде сложный вопрос, который я не могу правильно обобщить в названии.
У меня есть 64-битный процесс (Foo64), который создает 32-битный дочерний процесс (Bar32), а затем пытается получить полный путь версии kernel32.dll Bar32. Очевидно, я ожидаю, что Bar32 загрузит его из C:\Windows\SysWow64\kernel32.dll
В Windows 7 я вызываю GetModuleFileNameExA() из Foo64 и правильно возвращаю "C:\Windows\SysWow64\Kernel32.dll".
На Windows Server 2012 точно такой же код возвращает мне "c:\Windows\system32\kernel32.dll", которая является 64-битной папкой DLL. Очевидно, что Bar32 не может загрузить 64-битную DLL.
Я догадываюсь, что Server 2012 сообщает мне, откуда Bar32 пытался загрузить его, а не фактическое перенаправленное местоположение. Как я могу получить это, чтобы сказать мне истинное местоположение?
Есть ли что-то фундаментальное, что я неправильно понимаю?
Я прочитал все соответствующие страницы MSDN и первые три страницы всех соответствующих поисков Google.