日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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隐藏文件夹和应用程序访问物理寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。