WINCE下创建多个文件分区
********************************LoongEmbedded********************************
作者:LoongEmbedded(kandi)
時(shí)間:2011.01.11
類別:WINCE驅(qū)動(dòng)開發(fā)
********************************LoongEmbedded********************************
系統(tǒng):WINCE6.0+S3C2443
?
實(shí)現(xiàn)分區(qū)的是在eboot/nand.cpp下面的WriteOSImageToBootMedia中實(shí)現(xiàn)的,
?
1.創(chuàng)建一個(gè)分區(qū)的代碼如下所以
圖1
關(guān)于這個(gè)函數(shù)的詳細(xì)介紹,可以參考http://blog.csdn.net/LoongEmbedded/archive/2010/11/02/5981033.aspx,上面的代碼就是在基于nandflash的剩余空間(除去存放系統(tǒng)映像占用的一部分空間)創(chuàng)建FAT32的文件分區(qū)。
?
2.創(chuàng)建兩個(gè)分區(qū)
怎么實(shí)現(xiàn)呢?我在實(shí)現(xiàn)一個(gè)分區(qū)并且在系統(tǒng)啟動(dòng)后顯示kandi這個(gè)盤符的platform.reg中下面的注冊表信息
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NANDFLASH]
??? "Prefix"="DSK"
??? "Dll"="smflash.dll"
??? "Index"=dword:1
??? "Order"=dword:0
??? "Profile"="NANDFLASH"
??? "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
??? "Flags"=dword:00001000
ENDIF ;IMGHIVEREG
?????
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH/FATFS]
??? "Flags"=dword:14
???????? "Folder"="kandi"
??? "FormatExfat"=dword:1
??? "CheckForFormat"=dword:1
??? "EnableWriteBack"=dword:1
IF IMGHIVEREG???
??? "MountAsBootable"=dword:1
ENDIF ;IMGHIVEREG
在上面的注冊表的基礎(chǔ)上添加下面的內(nèi)容:
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NANDFLASH2]
??? "Prefix"="DSK"
??? "Dll"="smflash.dll"
??? "Index"=dword:9
??? "Order"=dword:0
??? "Profile"="NANDFLASH2"
??? "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
??? "Flags"=dword:00001000
ENDIF ;IMGHIVEREG
?????
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH2/FATFS]
??? "Flags"=dword:14
???????? "Folder"="kandi2"
??? "FormatExfat"=dword:1
??? "CheckForFormat"=dword:1
??? "EnableWriteBack"=dword:1
IF IMGHIVEREG???
??? "MountAsBootable"=dword:1
ENDIF ;IMGHIVEREG
做這些修改更新系統(tǒng)后,真的可以看到kandi和kandi2這兩個(gè)盤符,可是當(dāng)我把A.exe拷貝到kandi文件夾中,而把B.exe拷貝到kandi2文件夾中,然后重啟發(fā)現(xiàn)kandi和kandi2文件夾中都有A.exe和B.exe,說明沒有真正實(shí)現(xiàn)兩個(gè)分區(qū),還只是同一個(gè)分區(qū),后來想到到在eboot/nand.cpp下面的WriteOSImageToBootMedia中實(shí)現(xiàn),就加參考實(shí)現(xiàn)一個(gè)分區(qū)的代碼做了一下修改
圖2
但是這樣實(shí)現(xiàn)也只能看到kandi一個(gè)盤符,問題出現(xiàn)在哪里呢?原來是調(diào)用BP_OpenPartition函數(shù)會(huì)調(diào)用GetPartitionTableIndex函數(shù),來識別BP_OpenPartition創(chuàng)建的文件分區(qū)是否已經(jīng)創(chuàng)建過,如果創(chuàng)建過,WINCE50就不會(huì)再創(chuàng)建新的同種類型的文件分區(qū)。因?yàn)?/span>GetPartitionTableIndex函數(shù)的緣故,所以理論上同種類型的文件分區(qū)只能創(chuàng)建一個(gè),但是也可以通過修改第二個(gè)BP_OpenPartition函數(shù)的第4個(gè)參數(shù)(由TRUE改為FALSE)再創(chuàng)建一個(gè)兩個(gè)同種類型的文件分區(qū),如下所示
圖3
經(jīng)過圖3的修改,我們更新系統(tǒng)啟動(dòng)后可以看到下面的兩個(gè)盤符:
圖4
?
3.實(shí)現(xiàn)三個(gè)分區(qū)
有了上面的基礎(chǔ)之后,我們不難實(shí)現(xiàn)3個(gè)分區(qū),代碼如下:
圖5
修改更新系統(tǒng)之后,可以看到3個(gè)盤符:
圖6
4隱藏分區(qū)
實(shí)現(xiàn)如下:
圖7
這樣的系統(tǒng)起來后就看不到分區(qū)了
圖8
?
參考鏈接:
在wince50里創(chuàng)建多個(gè)文件分區(qū)的方法
http://hi.baidu.com/galloncity/blog/item/c6553700b67d7c081c958336.html
總結(jié)
以上是生活随笔為你收集整理的WINCE下创建多个文件分区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinCE内核裁减(中文字体)及字库和内
- 下一篇: WinCE 应用程序开机自动方法