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

本文介绍了在WinCE环境下通过加载流驱动访问物理寄存器以实现关机功能的方法,并讨论了如何通过注册表配置来隐藏特定的应用程序文件夹以加强保护,同时提供了设置文件夹属性的多种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值