这是在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