问题标签 [wow64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
552 浏览

visual-c++ - 如何在 64 位 windows 服务器 2008 上优化在 Visual C++ 2005 中编译 32 位应用程序

我刚刚安装了一个带有 64 位 windows server 2008 的构建服务器,用于持续集成。

我选择 64 位服务器的原因是拥有超过 ~3Gb 的 RAM。我曾希望这台机器能够提供极快的构建。

不幸的是,至少可以说,结果非常缺乏。我的桌面提供的构建速度比配备 Xeon 四核、15k RPM SAS 和 8 Gigs RAM 的服务器更快。

我们使用 Visual C++ 2005 用 Cygwin 编译我们的 32 位应用程序。

WOW64 模拟器会成为减慢构建过程的瓶颈吗?

任何指针,评论将不胜感激。

问候,

0 投票
5 回答
57972 浏览

c++ - 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2?

我正在拨打以下电话:

(C++、Visual Studio 5、Vista 64 位)。

即使“ regedit”显示密钥存在,它也会失败,错误代码为 2(“找不到文件”)。此代码一直适用于 32 位 XP。为什么它明显存在时“找不到文件”?

0 投票
4 回答
1707 浏览

windows - 从 WOW64 启动 Shell 链接 (LNK)

我们的 32 位应用程序通过 ShellExecute 启动 Windows LNK 文件(Shell 链接)。当它尝试“启动”指向 64 位二进制文​​件的链接(例如“开始”菜单中的“Internet Explorer(64 位)”快捷方式)时,它总是最终启动 32 位二进制文​​件。在内部,ShellExecute 错误地解析了链接目标:LNK 内部有一个隐藏字段,其中包含 FOLDERID_ProgramFiles。64 位应用程序将此解析为 64 位程序文件目录,但 32 位应用程序不会。

Wow64DisableWow64FsRedirection 不会改变 ShellExecute 的这种行为。

除了通过 64 位“蹦床”过程(由于我们的插件架构如何工作,这不是一个选项),32 位应用程序是否有任何方法可以像 64 位应用程序一样启动 shell 链接?

0 投票
7 回答
140127 浏览

windows - 在 64 位操作系统上,32 位进程可以访问多少内存?

在 Windows 上,在正常情况下,32 位进程只能访问 2GB 的 RAM(或 3GB,在 boot.ini 文件中使用特殊开关)。在 64 位操作系统上运行 32 位进程时,有多少可用内存?是否有任何特殊的开关或设置可以改变这一点?

0 投票
1 回答
1087 浏览

64-bit - Windows 中的 64/32 位标准驱动程序翻译

这个问题基本上是对这个线程的跟进: 在 32 位程序中使用 64 位驱动程序。视窗

正如我了解到的,当我有一个 64 位驱动程序时,它用于一组 64 位 DLL,我不能有一个 32 位进程调用 DLL。我们现在使用一些有趣的 interpocess 通信来解决这个问题。

不清楚的是,当使用像显卡这样的“标准设备”时,自动 64<->32 位转换是如何发生的。Windows 64 位操作系统下的任何 32 位应用程序都应该能够使用打印机驱动程序或通过使用某些 Windows DLL 使用 GDI 绘制一些东西。微软必须将显卡或打印机的硬件驱动程序从 32 位转换为 64 位。我知道 WoW64 可以访问注册表和文件系统,但它是否也可以转换为标准驱动程序?

具体的问题是,如果我们有一个 64 位 WDM 硬件驱动程序,它是否可以被 32 位应用程序轻松使用,而 Windows 进行 64<->32 的转换?

0 投票
6 回答
1997 浏览

c# - 开发和调试占用大量内存的 C# 应用程序

我有一个 C# 应用程序,它必须与 32 位库链接,并且还需要使用可能的最大内存量(成像应用程序);我们在 XP64 桌面上运行应用程序,因此我们使用 WOW64,针对 x86 的 Visual Studio 中的构建(并进行editbin /largeaddressaware后期构建)。我们遇到了几个问题:

  • 在 Visual Studio 内置调试​​器中,我们只能使用 2gb 内存(大约 1.5gb 到应用程序,加上开销)

  • 从命令行运行,应用程序可以看到 3gb 的内存,但微软文档似乎说我们应该看到 4gb。

谁能告诉我如何让 WOW64 C# 应用程序查看平台应该能够提供的完整 4gb?

另外,谁能告诉我如何让 Visual Studio(VS 2008,也称为 VS90)调试器遵守该/largeaddressaware位并停止将应用程序内存限制为 2gb?

我在 VS80 和 VS90 中看到了相同的行为;.NET Framework 3.5、3.0 和 2.0 之间也没有区别。这是一个说明问题的简单 C# 程序;为 x86 构建editbin /largeaddressaware,然后在内置调试器中运行与从命令行运行以查看 C# 可用内存的差异。

0 投票
3 回答
629 浏览

c++ - 我无法构建需要 WOW64 Api 的库

我正在修复 32 位应用程序的 Windows Vista 64 位的错误,当我尝试使用函数 Wow64DisableWow64FsRedirection(...) 时,编译器会显示“未声明的标识符...”。

我包含了 Windows.h 头文件并将 _WIN32_WINNT 设置为 0x0501。

有任何想法吗?

谢谢。

编辑:我们正在使用 MS Visual Studio 2003

0 投票
2 回答
2228 浏览

c++ - 将 32 位路径转换为其 WOW64 等效项

我可以在 32 位应用程序中调用任何函数来将它认为正在使用的路径转换为实际使用的路径吗?(例如,调用它来将 Program Files 中的文件夹的路径转换为 ​​Program Files (x86) 中的路径,或者在 64 位系统上运行时反之亦然。)我需要这样做,以便当用户在 GUI 中显示一个目录(如浏览文件或目录时),他看到的是真实的目录,而不是应用程序本身认为它看到的目录。

我们需要同时支持 32 位和 64 位 Windows,因此这应该在两种环境中都可以工作。

编辑处理WOW64的需要在于我的应用程序是安装程序的引导应用程序。默认情况下,该产品安装在 32 位系统上的 Program Files 下,而在 64 位系统上,它安装在 Program Files (x86) 下。允许用户选择安装产品的位置的对话框(如果他想要或需要的话,包括完全不同的硬盘驱动器);它必须在两种环境中都能正常工作。目前,它始终显示(和浏览)程序文件,即使在 64 位系统上也是如此。

0 投票
2 回答
2125 浏览

64-bit - 如何为 32 位和 64 位应用程序维护单独的 PATH 变量?

我正在迁移到 64 位 Windows 工作站,并将开发 32 位和 64 位应用程序。在运行 32 位和 64 位版本的应用程序时,我需要维护不同的 PATH 环境变量。

做这个的最好方式是什么?似乎所有的注册表重定向都应该是可能的。

谢谢,戴夫

0 投票
4 回答
28665 浏览

.net - 如何从 64 位 .NET 应用程序打开 WOW64 注册表项

我的 .NET 应用程序(任意 CPU)需要读取由 32 位程序创建的注册表值。在 64 位 Windows 上,这位于注册表中的 Wow6432Node 项下。我已经读到您不应该对 Wow6432Node 进行硬编码,那么使用 .NET 访问它的正确方法是什么?