********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

时间:2011.11.11

类别:WINCE应用开发

********************************LoongEmbedded********************************

本周的工作的一部分内容是根据产品的需求做些修改,其中包括应用程序来直接控制物理寄存器来实现关机,以及如何保护保存在FLASH分区中的应用程序的问题,下面总结一下,作为备忘录。

1.      应用程序访问物理寄存器

背景:产品在异地做试验,不便于更新NK,但客户要求在推出应用程序的时候关机。

刚开始尝试用MmMapIoSpace()和MmUnmapIoSpace()函数的方式来实现,但会出现内核出错的信息,因为WINCE6.0的应用程序是运行在用户态的,用户态下的应用程序不能直接访问物理寄存器(比如S3C6410的GPNDATA寄存器)。后来经过了解,可以采用应用程序加载流驱动,然后由流驱动来访问物理寄存器,从而实现关机功能。

应用程序的设计思想如下:

1)      调用RegCreateKeyEx()函数创建一个子键。

2)      在上面创建的子键下创建驱动(比如GPIO.dll)所需要的键项和键值。

3)      调用ActivateDeviceEx()函数来加载流驱动GPIO.dll。

4)      调用CreateFile函数来获取GPIO.dll的句柄。

5)      调用DeviceIoControl()函数来通过操作系统的调用,从而调用GPIO.dll的GPO_IOControl()函数,这样就可以实现此功能了。

参考代码如下所示:

图1

2.      隐藏文件夹

背景:为了加强对应用软件的保护,避免用户的操作而破坏了应用程序

基本可行的方式有如下几种:

1)      为应用程序的文件夹建立一个专门的分区,然后隐藏此分区

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FDSK\FATFS]

"FriendlyName"="PocketMory FAT FileSystem"

;    "Dll"="fatfsd.dll"

"Flags"=dword:00000014               ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN

"Folder"="PocketMory"

"FormatExfat"=dword:1

;    "EnableCacheWarm"=dword:0

"CheckForFormat"=dword:1

"EnableWriteBack"=dword:1

"MountAsRoot"=dword:1        ; for ROM-only file system

"DisableAutoScan"=dword:1

IF IMGHIVEREG

"MountAsBootable"=dword:1

ENDIF IMGHIVEREG

比如应用程序放在名称为PocketMory的分区中,那么只需要在上面注册表信息的基础上增加”MountHidden”=1就可以了,但是这种方式是把整个分区隐藏了,后面就不便于往此分区写数据了。

2)      采用SetFileAttributes()函数来设置文件或是文件夹的属性

隐藏文件夹LoongEmbedded

TCHAR m_szHiddenFolder[] = TEXT("\\SDMMC\\LoongEmbedded");

SetFileAttributes(m_szHiddenFolder,FILE_ATTRIBUTE_HIDDEN);

当然也可以重新显示此文件夹

SetFileAttributes(m_szHiddenFolder,FILE_ATTRIBUTE_NORMAL);

这种方式,我试过下面的方式来设置此文件夹为只读的方式,但是还是可以删除,不知道为什么?

SetFileAttributes(m_szHiddenFolder,FILE_ATTRIBUTE_READONLY);

而且如果设置为系统属性也可以隐藏此文件夹

SetFileAttributes(m_szHiddenFolder,FILE_ATTRIBUTE_SYSTEM);

3)      采用守护进程的思想,当删除应用程序的关键内容时做保护,这样的方式我没有实现,但这应该是一种不错的办法。

WINCE6.0隐藏文件夹和应用程序访问物理寄存器相关推荐

  1. android 隐私文件夹,秘密文件夹 – 隐私保护,隐藏文件夹和文件

    秘密文件夹 – 隐私保护,隐藏文件夹和文件 介绍 秘密文件夹 – 隐私保护,隐藏文件夹和文件 用最好的秘密文件夹 – 隐私保护,隐藏文件夹和文件保护您的个人资料.使用这个秘密文件夹应用程序,您可以隐藏 ...

  2. win7安装wince6.0中遇到的问题 CDeviceSDKInstallShim Add/Remove failed. HR=0x8007005

    原文地址:http://blog.sina.com.cn/s/blog_5aea09bb0100m22m.html 以前用xp,安装wince6.0一切顺利,能够正常使用.最近换了一台新电脑,安装了w ...

  3. WINCE6.0 SDK 模拟器下载与安装

    在使用VS2008进行CE开发过程经常需求调试程序,和模拟程序执行,附件中是WINCE6.0模拟器(SDK),使用系统开发是可以模拟WINCE6.0操作系统运行 C#(CF)程序. 下载并安装完成后, ...

  4. WinCE6.0中应用程序如何直接访问物理空间

    在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间.以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求.但这种方式有一个明显的缺陷,每次读写都必须经由它才能 ...

  5. WINCE6.0在应用程序中调用控制面板的应用

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  6. java数据库防火墙,数据库centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析...

    环境描述: 数据库:mongodb3.0.1 数据库系统:centos7,(虚拟机,最小安装) 数据库驱动:mongo-Java-driver-3.0.0.jar 问题描述:shell环境下用mong ...

  7. 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

    原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表 我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的 ...

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

    *******************************LoongEmbedded******************************** 作者:LoongEmbedded 时间:201 ...

  9. 站长新手入门:从0开始搭建微信小程序商城,不会代码也能开商城(附带源码)

    2020年全球疫情肆虐下,经济环境持续低迷,虽然国内已逐渐复苏,但线下消费仍然没法短期回到常态,所以今年开始直播电商.线上零售更加火爆.那么如果一个没有编程基础,或者说稍微懂一点技术的老板,要做小程序 ...

最新文章

  1. 华为式创新与海尔式创新——两条道路考验中国制造
  2. linux 命令改别名
  3. c++Cocktail Selection Sort鸡尾酒选择排序的实现算法(附完整源码)
  4. Python-基础知识-控制流程和文件操作
  5. React 和 Vue的特点
  6. 对爬虫爬取到的数据进行存储
  7. Windows Storage Server 2003 R2 英文正式版已发布
  8. (写给应届生)学松下幸之助找工作
  9. python 返回列表中的偶数
  10. dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第四章 工作列表(Work List)(二)...
  11. tasm报错illegal memory reference的解决办法
  12. unlocker解锁虚拟机安装黑苹果出现权限错误问题permission denied
  13. eclipse使用svn工具
  14. Redis - NX与XX
  15. ie 远程控制计算机,通过IE浏览器连接“远程桌面”方法详解
  16. 惯用过程模型_惯用代码
  17. [转] 下班后的九种最佳放松方法
  18. 青海省国家湿地公园功能区划数数据、全国湿地沼泽分布数据、全国省市县自然保护区
  19. flowable-ui(v6.7.2)简单的请假流程审批操作(一)
  20. linux内核中断实践5:threaded_irq

热门文章

  1. mysql全表扫描和用索引的区别
  2. 010_数字内建函数
  3. 001_FastDFS介绍
  4. linux lvm 系统快照,利用Linux LVM进行快照备份
  5. Android java.lang.UnsatisfiedLinkError
  6. Android5.0新特性:主题样式
  7. MyEclipse 2017软件安装教程
  8. linux分区知识,Linux硬盘分区知识
  9. Docker镜像管理
  10. 软考高项之学习笔记——质量成本概念