在 64 位 Windows Server 2008 上的终端会话中,不同 32 位进程中相同 DLL 的共享内存有时会有所不同

发布于 2024-09-04 02:20:35 字数 362 浏览 3 评论 0原文

我们有一个由一些进程组成的 32 位应用程序。它们与每个进程使用的 DLL 的共享内存进行通信。共享内存是通过“#pragma data_seg ("Shared")”在 C++ 中使用全局变量构建的。

除了现有(第一个)进程之外,在启动新进程期间运行此应用程序时,我们观察到两个进程的共享内存不相同。所有新启动的进程都无法与第一个进程通信。 停止所有进程并重新启动应用程序(使用某些进程)后,一切正常。但有时在成功启动和完成新进程后,问题会再次出现。

在所有其他 Windows 版本或 Windows Server 2003 上的终端会话上运行时,我们的应用程序从未遇到此问题。 Windows Server 2008 上是否有任何新“功能”可能会扰乱我们应用程序的和谐性?

We have an 32 bit application consisting of some processes. They communicate with shared memory of a DLL used by every process. Shared memory is build with global variables in C++ by "#pragma data_seg ("Shared")".

When running this application sometime during starting a new process in addition to an existing (first) process we observe that the shared memory of both processes is not the same. All new started processes cannot communicate with the first process.
After stopping all of our processes and restarting the application (with some processes) everything works fine. But sometime or other after successfully starting and finishing new processes the problem occurs again.

Running on all other Windows versions or terminal sessions on Windows server 2003 our application never got this problem. Is there any new "feature" on Windows server 2008 that might disturb the hamony of our application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思慕 2024-09-11 02:20:35

Windows 在名为 Wow64 的包装器下运行 32 位程序。您的进程是否都在同一个 Wow64 包装器下运行(使用 Process Explorer 查看进程树)。

Windows runs 32bit programs under a wrapper called Wow64. Are your processes all running under the same Wow64 wrapper (use Process Explorer to see the process tree).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文