- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一些 Windows CE 5.0 设备的问题,这些设备在从待机状态(挂起)恢复后几乎立即崩溃。我已经将这个问题压缩到大约 15 行 C++ 来简单地让 wxWidgets 显示一个消息框,如果我:
在我将其浓缩之前,这个问题以许多其他方式表现出来 - 在加载位图时,在扫描条形码时,一旦它被暂停,然后恢复。
我正在使用以下内容:
实际显示的错误是零星的,范围很广,但主要是访问冲突,通常在函数调用的起始地址附近(通过挂起设备、恢复然后在设备上附加 VS 调试器发现这一点)。在做了大量的功课之后,我读到了一些建议,这可能是某种堆损坏的发生。只要应用没有挂起,它就会始终在所有正确的 SDK 和设备组合中正常运行。
我还尝试了以下 SDK:
我测试了以下设备:
我玩过 wxWidgets 的设置,始终确保我将应用程序与正确的相应 SDK 链接。
这是导致这个问题的代码:
#include "wx/wxprec.h"
class Application : public wxApp {
public:
virtual bool OnInit();
};
bool Application::OnInit() {
wxMessageBox(L"Test");
return true;
}
IMPLEMENT_APP(Application)
如果有人能给我一些建议,我将永远感激不尽!如果我遗漏了任何重要的细节,也请告诉我。
最佳答案
您是从 SD 卡运行应用程序吗?至少 MC3090,我认为还有 MC55,默认情况下符合附加总线的 Windows CE 标准(最初为 PCMCIA 卡定义):当您暂停和恢复设备时,所有总线都会重置。这会导致卡暂时消失,所有在卡上打开的文件句柄都将失效。这实际上是为了让设备可以在设备挂起时处理用户换卡。
Windows CE 是一个按需分页 操作系统。您的程序在启动时并未全部加载到 RAM 中:相反,页面仅在程序引用时从可执行文件和 DLL 中加载。操作系统可以随时丢弃任何只读或未修改的页面,因为它可以从原始程序文件中重新读取它们(这就是为什么程序运行时无法覆盖程序文件的原因)。如果 EXE 或 DLL 的句柄无效,并且您引用了一个尚未加载(或已被丢弃)的页面,操作系统页面错误处理程序将无法读取该页面并生成访问冲突异常。
对于 MC3090,您可以将 SD 卡驱动程序配置为在从 sleep 中恢复时不“移除”卡。请参阅 Symbol 的知识库文章 MC30xx CE5.0 - Application aborting randomly when using SD Card了解详情。我找不到有关如何在 MC55 上执行此操作的详细信息。在 MC70 上,系统控制面板中有一个“SDSwitch”小程序,其主要功能是在存储卡和 SDIO 模式之间切换,但也有一个复选框来控制此选项。其他一些设备在\Windows 文件夹中有一个“密封的 SD 插槽”CAB 文件 - 我似乎在 MC65 或 ES400 上记得这个。
关于visual-c++ - wxWidgets wxWinCE 挂起-恢复崩溃(VC++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575567/
我遇到了一些 Windows CE 5.0 设备的问题,这些设备在从待机状态(挂起)恢复后几乎立即崩溃。我已经将这个问题压缩到大约 15 行 C++ 来简单地让 wxWidgets 显示一个消息框,如
我是一名优秀的程序员,十分优秀!