解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题

6410平台下的wince6系统,在应用层中使用SetSystemPowerState api函数关机发现无效。

应用层调用如下:

[cpp]view plaincopy
  1. SetSystemPowerState(NULL, POWER_STATE_OFF, POWER_FORCE);  

注:该调用需要引用pm.h头文件,该头文件在wince600目录下可找到,同时需要使用#pragma comment(lib, "coredll.lib")来引用静态库


跟踪pm电源管理驱动发现,传进来的POWER_STATE_OFF的参数在某个地方被屏蔽掉了,没有接着往下走。由于跳转调用的太多了,无法准确定位到哪里屏蔽掉了。而且就算是定位到了要修改PM驱动也会很麻烦。所以就找到了PlatformSendSystemPowerState()这个位置。只要在这下面,针对POWER_STATE_OFF的情况进行处理即可。我的处理方法是,直接在这个地方调用到PowerButton的驱动,去进行关机处理。因为在这个PM驱动下无法控制到GPIO,所以就打算直接调用驱动接口来控制。

具体修改如下:

1、修改C:\WINCE600\public\common\oak\drivers\pm\pdd\default\platform.cpp文件中的DWORD WINAPI PlatformSendSystemPowerState(LPCWSTR pwsState, DWORD dwStateHint, DWORD dwOptions)函数。

在return之前加上这么一段:

[cpp]view plaincopy
  1. if(dwStateHint == POWER_STATE_OFF){  
  2.         HANDLE h = CreateFile(L"PWR1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,0 );  
  3.         if(h != INVALID_HANDLE_VALUE){  
  4.             DeviceIoControl(h, 0x0, NULL, 0, NULL, 0, NULL, NULL);  
  5.             CloseHandle(h);  
  6.         }  
  7.     }  

2、在PowerButton驱动中添加相应的关机控制处理:

修改C:\WINCE600\PLATFORM\SMDK6410\src\drivers\PowerButton\PowerButton.c文件中的PWR_IOControl()函数。

在return之前添加以下处理:

[cpp]view plaincopy
  1. if(dwCode == 0x0){// power off  
  2.         RETAILMSG(1, (TEXT("*** [PWR] PWR_IOControl dwCode:%#x ***\r\n"), dwCode) );  
  3.         pSysConReg->INFORM2 = 0x55555555;        //flag indicate entering sleep mode   
  4.         SetSystemPowerState(NULL, POWER_STATE_SUSPEND, 0);  
  5.         return TRUE;  
  6.     }  

上述都修改完后,把这两个驱动rebuild以下,然后再对整个工程进行build and sysgen。

已经测试通过,用户可以在应用层通过SetSystemPowerState 来进行关机


在此记录一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】理解字节序 大端字节序和小端字节序

转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005/article/details/39672529 1. 计算机硬件有两种储存数据的方式:大端字节序…

Web-DispatcherServletUrlPatterns

Web-DispatcherServletUrlPatterns 在MANIFEST.MF文件中指定了Web-DispatcherServletUrlPatterns时千万要注意它的规则,首先它必须是符合servlet的url-pattern的,其规则如下: 在web.xml文件中,以下语法用于定义映射: …

WCHAR char CString等常用类型互转

1、CString to WCHAR*: [cpp]view plaincopy WCHAR *wch (WCHAR*)str.GetBuffer(str.GetLength()); str为CString类型。 2、WCHRA* to char*: [cpp]view plaincopy memset(buf, 0, bufInLen); // WCHRA to char WideCharToMultiByte( CP_ACP, 0, wch, -1, buf,…

html文件自动批阅器怎么设计,作业作业提交与批改系统HTML界面.doc

作业作业提交与批改系统HTML界面作业1-作业提交与批改系统HTML界面请根据以下需求部分功能或全部全部功能HTML界面代码;注意HTML代码附在本文后面一、作业提交与批改系统系统功能图基本功能1.学生注册2.学生、教师、管理员密码找回功能3&…

【转】Photoshop保存格式介绍大全

01 PSD格式 PSD格式:PSD是Photoshop默认的文件格式,他可以保留文档中的所有图层、蒙蔽、通道、路径、未栅格化的文字、图层样式等。通常情况下,我们都是将文件保存为PSD格式,以后可以对其修改。PSD是除大型文档格式(PS…

创建windows服务,定时监控网站应用程序池

最近网站总是报"Timer_Connection"错误,导致该网站所使用的应用程序池由于错误过多停止运行,网站也就出现了service unvaliable,无法访问,在网上查了很多资料,结果很让人无奈,这个问题已经困扰我了很久,一直没有得到解决,后来同事发来一篇文章让我有了新的解决方法,虽…

UNICODE十六进制数组转成中英文

UNICODE十六进制的数组转成中英文 实现char*转换成中英文,每两个char合成一个wchar_t: [cpp]view plaincopy // UNICODE十六进制数组转成中英文 // hex array to wchar_t* // wchs NULL, wchsLen as output(the size of wchs will be used) // er…

html+选择弹出选项卡,javascript – Chrome扩展程序:从弹出窗口获取当前选项卡

我正在撰写Chrome扩展程序,在其中一部分,当弹出页面上的按钮被点击时,我需要获取当前选项卡的标题和URL。我之前已经和Chrome的消息传递系统一起工作了,并且经过许多努力,已经设法让它在许多场合工作。不过&#xff0c…

【转】Qtcreator中常用快捷键和小技巧

转自:https://blog.csdn.net/imxiangzi/article/details/48863855 https://blog.csdn.net/jh1513/article/details/52346802 快捷键及对应含义 下载地址:http://download.csdn.net/detail/jh1513/9615209 快捷键 功能 Esc 切换到代码编辑状态 F1 …

添加蜂窝注册表及永久存储

1、 添加 Hive-based Registry 在 Platform Builder 的“ Catalog ”窗口中,单击打开 Catalog->Core OS->Windows ce devices->File Systems and Data Store->Registry Storage(Choose 1)->Hive-based-based Registry 节点,选中 Hive-b…

interface abstract与virtual

interface用来声明接口 1.只提供一些方法规约,不提供方法主体 如 public interface IPerson { void getName();//不包含方法主体 } 2.方法不能用public abstract等修饰,无字段变量,无构造函数。 3.方法可包含参数 如 public interface IP…

【转】VS编译时自动引用Debug|Release版本的dll

转自:https://www.cnblogs.com/KevinYang/archive/2011/04/10/2011879.html 公司一些早期的项目,把所有工程都放到一个解决方案下了,导致整个解决方案编译很慢,而且也不便于类库的复用和维护。因此我们决定把工程按照功能划分到不…

asp 生成html文件,将指定的asp文件内容生成html文件_asp技巧

Function GetPage(url)dim RetrievalSet Retrieval CreateObject(“Microsoft.XMLHTTP”)With Retrieval.Open “Get”, url, False , “”, “”.SendGetPage BytesToBstr(.ResponseBody)End WithSet Retrieval NothingEnd FunctionFunction BytesToBstr(body)dim objstrea…

Delphi手动创建数据集

习惯了.net的DataTable,便习惯性的认为Delphi中也有类似的东西,结果搞了好久才搞定,看来看去是拿着Delphi实现.net的思想,生搬硬套了,不过倒也解决了一些问题语言间的思想差别还是有的呃。 1数据集的创建CreatDataSet…

WINCE基于hive注册表的实现

1.WINCE注册表概述 WINCE注册表保存着应用程序、驱动、用户参数配置和其他配置设定的数据,WINCE提供自由选择基于RAM还是基于hive的注册表,其中基于RAM注册表本质是堆栈文件,保存在RAM中,如果RAM的供电掉电了,除非OEM…

【转】DICOM之Print!!!!!!!!!

转自:https://blog.csdn.net/weixin_41556165/article/details/81064531 基本概念: Film:在DICOM协议中使用Film来统称不同的Hard Copy,例如photographic film和paper。 DICOM Print的数据流由Print Session、Print Job、Print(h…

静态html js文件上传,js实现动态添加上传文件页面

发邮件是需要添加一些文件,每添加一个文件,页面上可以显示一个表单文件上传选项。此功能为:初始时刻只有一个添加按钮,当点击添加文件时,会增加一个选择文件和删除区域,同时显示上传按钮,当点击…

JS截取字符串

使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组例子:str”jpg|bmp|gif|ico|png”;arrtheString.split(”|”);//arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组 函…

WINCE6.0文件系统及存储管理器

*******************************LoongEmbedded******************************** 作者:LoongEmbedded 时间:2010.12.03 类别:WINCE嵌入式系统 ********************************LoongEmbedded******************************** Filesys.…

【转】Wireshark网络抓包(一)——数据包、着色规则和提示

转自:https://www.cnblogs.com/strick/p/6261463.html 一、数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息。 帧:物理层、链路层 包:网络层 段:传输层、应用层 1)Frame 物理层…