WINCE6.0隐藏文件夹和应用程序访问物理寄存器
********************************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隐藏文件夹和应用程序访问物理寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WINCE6.0+S3C6410基于SD
- 下一篇: S3C6410禁用和启用触摸屏