Windows CE / Mobile
文章平均质量分 77
keyssoft
这个作者很懒,什么都没留下…
展开
-
【WCE】如何在 boot registry 下调整显示分辨率 (.Net 4.2)
对于在公共场所使用的 Internet Applicance 而言,RAM-based 或 Hive-based 注册表都是不安全、不可靠的,主要原因有:一旦用户通过 Win32 API 篡改注册表数据,可能会影响系统的正常运行。如果要恢复注册表数据,往往需要生产商派出技术人员去现场指导。 由于需要安装 FAT 卷,存在用户通过 Explorer 篡改 DOM 上文件,导致系统不能启动原创 2007-06-25 12:55:00 · 1822 阅读 · 0 评论 -
【WM】谈注册表通告功能StatStore响应较慢的原因
StatStore被State and Notifications Broker替换也有些年头了,StatStore也和State and Notifications Broker一样提供了注册表访问、上报键值改动的能力,以前也没体会出替换的必要性。但最近在维护一个旧程序时,发现对同一键值的修改,通过IStatStore::RegisterForNotifications和RegistryNot原创 2009-11-23 14:16:00 · 666 阅读 · 0 评论 -
【WM】应用程序实现网络去附着(unregister)的简便方法
在Windows Mobile下,应用程序如果需要网络去附着一般需要调用RIL函数RIL_UnregisterFromNetwork(调用扩展TAPI函数lineUnregister的很少见)。但是,由于该函数是异步的,如果想通过result callback获知网络去附着是否成功的话就比较麻烦了。 因此,笔者在此介绍一个未归档的函数UnregisterFromNetwork,该函数亦可实原创 2010-02-26 22:28:00 · 663 阅读 · 0 评论 -
【WM】如何判断进程能否被终止(freeable)
我们在编写程序时,可能会碰到类似Task Killer方面的需求,要求我们在设备资源不足的情况下,终止部分不重要或资源占用较多的进程。但在Windows Mobile 6.1及后续版本上有数个进程是不允许被终止的,一旦某个进程被终止通常会导致OS不稳定或某些重要功能丧失。目前为止,共有7个进程,分别是:nk.exe、filesys.exe、device.exe、gwes.exe、services.原创 2010-04-19 12:21:00 · 1031 阅读 · 0 评论 -
【WM】工作窗口类原理和实现
通过Remote Spy我们常能见到类名为Worker的窗口(如下图所示),那么工作窗口类是什么呢?其实工作窗口与常规窗口十分相似,只不过我们无需调用RegisterClass()函数注册窗口类,并把我们传入的p参数作为窗口的额外数据保存了起来。想来微软青睐这类不可见的窗口也就是为了简化步骤,提高效率而已。 我们先来看看如何创建工作窗口的。在头文件miscsvcs.h内有CreateW原创 2010-04-19 21:25:00 · 877 阅读 · 0 评论 -
【WM】如何判断两个窗口是否由同一进程创建
在我们的代码中,可能要判断某个窗口是否由shell32、cprog、tmail或connmgr进程创建的。由于这几个进程都会创建数个很具有特征意义的窗口,比如:shell32进程会创建DesktopExplorerWindow和HHTaskBar等窗口,故这个问题就可简化为判断两个窗口是否由同一进程创建。 在头文件wpcpriv.h中,存在未归档Win32 API函数SHSameWindowP原创 2010-04-22 20:21:00 · 1565 阅读 · 0 评论 -
【WM】如何判断给定窗口是否是电话应用窗口
这里所指的电话应用窗口是指由cprog.exe的UI线程创建的窗口,除了大家在平时能够看见的alert(来电)、progress(通话过程)、dialer(拨号盘)等对话框外,cprog.exe还注册三个不可见的窗口类:MSCprog、MSScut和MSClog。这3个窗口类很具有特征意义,通过类名可以很容易地区分出来。而alert(来电)、progress(通话过程)、dialer(拨号盘)等对原创 2010-04-23 21:48:00 · 739 阅读 · 0 评论 -
【WM】如何递归创建目录
在Windows Mobile上调用CreateDirectory()函数只能创建路径中的最后的目录,不能递规创建目录。如果任意父目录或中间目录不存在,CreateDirectory()函数会返回FALSE,调用GetLastError()函数返回错误号ERROR_PATH_NOT_FOUND。而我们在工作中经常需要递归创建目录,因此,笔者在这里介绍一个能够递归创建目录的Win32 API函数Cr原创 2010-04-26 20:01:00 · 1359 阅读 · 0 评论 -
【WM】如何获取Exe文件的进程ID
我们在编程时,或许想知道给定Exe文件是否正在运行?如果正在运行,那么他的进程ID是多少?Win32 API函数GetExeProcessId()就能帮你实现这个目的。 该函数的原型声明位于miscsvsc.h内:HRESULT GetExeProcessId(LPTSTR pszExeFile, DWORD* pdwProcID); 要使用该函数需要链接ossvcs.lib。原创 2010-05-01 16:20:00 · 1640 阅读 · 0 评论 -
【WM】Phone Canvas重复创建视图的原因
记得08年刚做可视电话模块的时候,我们被Phone Canvas函数不返回RPC_E_WRONG_THREAD现象所迷惑,在H.324协议栈线程内调用了Phone Canvas函数导致cprog.exe创建了两个Progress View。结果两个Progress View交替显示,状态那叫一个混乱哟!解决这个问题的方法,笔者已在《【WM】谈Phone Canvas函数为何不会返回错误值RPC原创 2010-05-23 14:58:00 · 612 阅读 · 0 评论 -
【WM】谈Phone Canvas函数为何不会返回错误值RPC_E_WRONG_THREAD
微软向OEM厂商提供Phone Canvas机制,让我们可以修改cprog.exe的数个界面布局和UI交互行为。我们发现多数Phone Canvas API函数的返回值列表中都存在错误值RPC_E_WRONG_THREAD,下表就是PHGetBlobPtr的返回值列表: S_OKIndicates success. E_INVALID原创 2009-08-30 11:31:00 · 1658 阅读 · 1 评论 -
【WCE】实现永久性注册表数据保存 (VIACEPC BSP)
目标系统的硬件环境:VIA CLE266 NorthBridge + VT8235 SouthBridge,Transcend TS32MDOM40V DOM目标系统的软件环境:Windows CE 5.0,VIA CLE266/CN400/CN700 CEPC BSPHive-based: 将 Catalog/Device Drivers/Storage Devices/Storag原创 2007-06-07 11:06:00 · 2229 阅读 · 2 评论 -
【WCE】使用 8253 定时器蜂鸣 (CEPC BSP)
通过测试,我们发现 Windows CE 没有实现 Beep 函数,亦注意到 x86 嵌入式系统在运行 Windows XPe 时能通过调用 Beep 函数来驱动蜂鸣器蜂鸣。经过对 Beep 函数反向工程以及 8253 定时器蜂鸣原理的研究,我们相信在 Windows CE 下同样能够蜂鸣。首先,讲解一下早期 PC 上的 8253 定时器蜂鸣原理:图中 CLOCK 是时钟(fc=1,1原创 2007-06-28 23:38:00 · 2671 阅读 · 0 评论 -
【WCE】使用事件日志服务(一)
默认情况下,只有将 Catalog/Core OS/Windows CE devices/Communication Services and Networking/Networking Features/Internet Connection Sharing (ICS)/Gateway Logging 加入 workspace 后,事件日志服务才会作为一个模块加入 CE_MODULES。我们可以原创 2007-07-08 04:43:00 · 1349 阅读 · 1 评论 -
【WCE】使用事件日志服务(二)
浏览 common.reg 我们可以看到:; @CESYSGEN IF CE_MODULES_EVENTLOG[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/EventLog/System]"Output"="File""File"="SystemLog.xml""Format"="XML"[HKEY_LOCAL_MACHINE/SYSTEM/Cu原创 2007-07-17 23:34:00 · 1108 阅读 · 0 评论 -
【WCE】使用事件日志服务(三)
*《【WCE】使用事件日志服务(三 / 四)》的内容已重新调整过。Windows CE 的 Event Logging API 有如下 10 个函数:BOOL WINAPI ReportEventW(HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings,原创 2007-08-02 21:47:00 · 1263 阅读 · 0 评论 -
【SSCE】使用 sqlceer30CN.dll 的字符串表生成事件消息文件
2007-10-18 为支持通过 IErrorRecords::GetErrorParameters 方法填充参数列表 "[,,,,,]",而修改 EnumResNameProc 函数的实现。为使应用程序在使用 SQL Server 2005 Compact Edition (简称 SSCE) 时,能调用 ReportEvent 向 EventLog 服务报告 SSCE 相关的错误事件,我们需原创 2007-08-14 21:50:00 · 948 阅读 · 0 评论 -
【IDA】分析 Windows CE 事件日志服务(一)
笔者在开始使用 Windows CE 事件日志服务时,由于自身条件限制未能获得 Microsoft 的技术支持,故只能使用 IDA Pro 对 eventlog.dll 进行分析。笔者感觉事件日志服务相关的注册表设置可能对嵌入式系统软件工程师比较有用,所以注重分析 StartAllLoggers、InitFormattersAndOutputters、CLogEventLog::Initial原创 2007-08-18 02:50:00 · 1637 阅读 · 0 评论 -
【WCE】显示器电源管理 (Standard Shell)
在使用 Standard Shell 的情况下,出于节约用电和保护显示器的目的,我们需要在 User Idle 时进入显示器节电模式 (ScreenOff),在 User Active 时退出显示器节电模式 (ScreenOn)。该项功能要依靠 Power Manager 和 GWES 来实现,具体为:Power Manager 维护显示器电源状态,通过设备驱动控制显示器进入/退出节电原创 2007-08-27 02:25:00 · 2700 阅读 · 2 评论 -
【WCE】使用事件日志服务(四)
*《【WCE】使用事件日志服务(三 / 四)》的内容已重新调整过。假设我们要记录一个事件源是 SQL Mobile 的事件到 Application 日志。需要如下步骤:1. 使用菜单 Platform->Settings,在“Platform Settings”对话框中选择“Environment”标签,设置环境变量 SET PRJ_ENABLE_EVENTLOG = 1。2. 在原创 2007-08-29 02:42:00 · 1355 阅读 · 0 评论 -
【WCE】Windows Shell 路径处理函数
MSDN Library 上从未公布过 Windows Shell 路径处理函数的 Windows CE 实现信息。不过 $(_WINCEROOT)/PUBLIC/SHELL/OAK/LIB/$(_TGTCPU)/$(WINCEDEBUG) 目录下的 shcore_path.lib (静态链接库) 导出了不少 Windows Shell 路径处理函数。其中,WinCE 和 WinNT 公原创 2007-05-30 00:44:00 · 2043 阅读 · 0 评论 -
【WM】Phone Canvas提示信息对照表
Phone Canvas函数PHShowPhoneMsg()可依据传入的phmsg显示恰当的提示信息:HRESULT PHShowPhoneMsg( PH_MSG phmsg, LPCWSTR pszText, LPCWSTR pszTitle); 下表为常用提示信息对照表:phmsgpszTextPH_MSG_SU原创 2010-05-30 14:53:00 · 875 阅读 · 0 评论