现在的位置: 首页 > 综合 > 正文

出现”VMProcessPageFault Error: Page fault occurred while in power handler”原因及解决方法

2013年08月21日 ⁄ 综合 ⁄ 共 973字 ⁄ 字号 评论关闭

这是在WINCE6下进入休眠模式时会出的错误,从网上找到的说明如下:

第一种说明(http://www.cnblogs.com/cdfyanghua/archive/2010/05/22/1741616.html)
在CE6.0进Sleep的时候经常会出现下面的错误:
VMProcessPageFault Error: Page fault occurred while in power handler! Address = 0x40304228
ERROR: Power Handler function yield to low priority thread.
VMProcessPageFault Error: Page fault occurred while in power handler! Address = 0x40493384
...
可能的原因:
1.在驱动程序的PowerDown中调用系统API,如Sleep等;
2.如果使用的Binfs,则检查common.bib中的所有DLL,如果该DLL导出了Powerup或PowerDown函数,则加上M标志(表示该模块为non-pageable)。
在我的系统中,按第二种方式改了之后,正常。

第二种说明(http://blog.csdn.net/Veabol/archive/2010/05/07/5566764.aspx)
CE6.0在使用multi-bin的时候执行suspend如果出现VMProcessPageFault Error: Page fault occurred while in power handler! Address = 0x40314228且不能suspend成功,只需要在config.bib中将ROMFLAGS的最低位置1,这样Suspend的时候系统就不会去做Page Out,也就不会有VMProcessPageFault Error。
根据查找资料,如果驱动的powerdown函数中没有调用系统的API也不会出现这样的问题。
; ROMFLAGS is a bitmask of options for the kernel
;   ROMFLAGS    0x0001      Disallow Paging
;   ROMFLAGS    0x0002      Not all KMode
;   ROMFLAGS    0x0010      Trust Module only

抱歉!评论已关闭.