版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、wince注冊表結構與桌面windows一樣,windows ce也使用注冊表(registry)來保存應用程序、驅動程序和用戶的設定以及其他一些配置信息。windows ce注冊表也采用樹形結構來管理配置信息,由于windows ce注冊表的結構和功能與桌面windows幾乎一樣,在這里就不詳細介紹了,讀者可以參考其它關于注冊表的資料。windows ce支持四個根鍵,描述如下:鍵名 描述hkey_local_machine 硬件和驅動配置數(shù)據(jù)hkey_current_user 用戶配置數(shù)據(jù)hkey_classes_root ole和文件類型匹配配置數(shù)據(jù)hkey_users 適用于所有用戶的
2、數(shù)據(jù)由于嵌入式系統(tǒng)的特點,一些嵌入式設備是沒有外存的。因此windows ce的注冊表提供了兩種實現(xiàn)方式:基于ram的注冊表(ram-based registry)和基于hive的注冊表(hive-based registry)。我們可以選擇在windows ce中使用任何一種注冊表,注冊表類型對于用戶和應用程序來說是透明的。 基于ram的注冊表正如其名,基于ram的注冊表把整個注冊表作為一個對象存儲堆存放在系統(tǒng)的內存中。這意味著如果對系統(tǒng)進行冷啟動或者系統(tǒng)斷電,對注冊表的所有改動都會丟失。如果使用基于ram的注冊表,對注冊表的讀寫訪問操作會變得非常高效。因此基于ram的注冊表比較適用于沒有外
3、部存儲,而且有電池保存內存數(shù)據(jù)(battery-backed ram)的設備。如果有外存且經(jīng)常冷啟動的設備采用基于ram的注冊表,則需要在系統(tǒng)斷電的時候對注冊表進行保存,等系統(tǒng)再次啟動時對保存的注冊表進行還原。windows ce提供了兩種方法用來斷電保存基于ram的注冊表:1. windows ce提供了兩個系統(tǒng)api用來保存和還原整個注冊表,它們的原形如下:bool regcopyfile( lpcwstr lpszfile / 保存注冊表信息的文件的名字);bool regrestorefile( lpcwstr lpszfile / 保存注冊表信息的文件的名字);如果要保存和恢復注冊表
4、,我們只需要在系統(tǒng)斷電的時候調用regcopyfile函數(shù)將整個注冊表保存為外存上的一個文件。當系統(tǒng)重新啟動時,我們再調用regrestorefile函數(shù)將文件全部讀出ram中,然后再熱啟動系統(tǒng),我們保存得注冊表就可以生效了。值得注意的是這次熱啟動是必須的,因為只有在系統(tǒng)啟動的時候才會去檢測regrestorefile放在ram里的注冊表信息。這種方法的優(yōu)點是完全可以使用應用程序來實現(xiàn)基于ram的注冊表的保存,而且這種方法相對簡單。但是此方法的缺點是需要兩次啟動。因此效率相對比較低。2. 第二種方法需要oem的參與,oem可以在bsp的oal層中實現(xiàn)writeregistrytooem和rea
5、dregistryfromoem兩個函數(shù),它們的聲明為:dword readregistryfromoem( dword dwflags, / 參數(shù), reg_read_bytes_start表示讀新的注冊表 lpbyte lpdata, / 指向注冊表數(shù)據(jù)的緩沖區(qū),由os分配 dword cbdata / 緩沖區(qū)的大小);bool writeregistrytooem( dword dwflags, / 參數(shù),reg_write_bytes_start表示寫新的注冊表 lpbyte lpdata, / 指向注冊表數(shù)據(jù)的緩沖區(qū),由os分配 dword cbdata / 緩沖區(qū)的大小,0表示到達
6、注冊表尾部);windows ce會在系統(tǒng)啟動和關閉的時候調用這兩個函數(shù)來保存和恢復注冊表。此種方法雖然可以避免兩次啟動,但是困難的地方是readregistryfromoem函數(shù)的實現(xiàn)比較困難,因為在系統(tǒng)啟動的時候,塊設備驅動和文件系統(tǒng)的驅動都還沒有加載,因此不能使用createfile,readfile這樣的文件系統(tǒng)api來實現(xiàn)readregistryfromoem函數(shù),只能使用一些更底層的操作來實現(xiàn)。 基于hive的注冊表自從windows ce 4.0之后,windows ce提供了基于hive的注冊表。基于hive的注冊表把注冊表數(shù)據(jù)存放在文件系統(tǒng)的文件上,這種文件被稱作蜂箱hive
7、。這就意味著不再需要在系統(tǒng)斷電和啟動時進行保存恢復注冊表操作。hive是注冊表中的一組鍵,子鍵和值。hive是文件系統(tǒng)上表現(xiàn)為單個文件。windows ce中有三種hive。類型 文件 描述boot hive rom中的boot.hv hkey_local_machine, hkey_classes_root, hkey_users中的所有數(shù)據(jù)。只在啟動時使用。system hive 由oem決定(通常是system.hv) hkey_local_machine, hkey_classes_root, hkey_users中的所有數(shù)據(jù)。包含設備范圍內不隨著用戶改變而改變的數(shù)據(jù)。user hiv
8、e user.hv hkey_current_user下的所有數(shù)據(jù)。 包含用戶特有的設置,每個用戶都有一個單獨的user.hv?;趆ive的注冊表適用于對于有永久存儲并且需要經(jīng)常冷啟動的設備。我們也可以看到,基于hive的注冊表把系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)分開存放,這就意味著基于hive的注冊表還提供多用戶支持。對于每一個用戶,可以提供不同的user.hv,當用戶登錄時加載相應的user.hv,從而達到多用戶目的。注冊表類型分為基于對象存儲的注冊表和基于hive的注冊表,在制定內核的時候只能選擇其中一種。從理論上講這兩種注冊表都能夠實現(xiàn)永久保存注冊表數(shù)據(jù),不過采用不同的類型會影響ce的啟動順序和啟動
9、速度,還會影響內存的使用量。我還是趨向于采用基于hive的注冊表來實現(xiàn)永久保存注冊表數(shù)據(jù),這也是個發(fā)展趨勢。在講解之前先簡單描述如果ce采用基于hive的注冊表,那么在啟動時怎么加載已保存的注冊表數(shù)據(jù):1、nk.exe執(zhí)行,啟動filesys.exe。2、filesys.exe加載引導hive,此時引導hive位于nk.bin解壓之后的文件中。3、filesys.exe啟動device.exe,之后處于等待狀態(tài),等待device.exe將包含系統(tǒng)hive的文件系統(tǒng)和存儲設備的驅動程式加載完畢。而這個文件系統(tǒng)和存儲設備的驅動程式存在于引導hive中。4、device.exe加載上述所說的文件系統(tǒng)
10、驅動程式和存儲設備驅動程式,使之開始工作。之后device.exe處于等待狀態(tài)。5、filesys.exe被喚醒,加載并且安裝系統(tǒng)hive。之后filesys.exe處于等待狀態(tài)。6、nk.exe按照系統(tǒng)hive的信息開始執(zhí)行初始化工作。其中包括加載驅動程式和啟動一些應用程式。其中加載驅動程式一般由device.exe執(zhí)行,而啟動應用程式由filesys.exe執(zhí)行。這時device.exe和filesys.exe已被喚醒。因為引導hive和系統(tǒng)hive肯定有重復的地方,所以可能出現(xiàn)重復加載了驅動程式或重復啟動了應用程式。為此,ce允許在描述驅動程式的注冊表信息中加入防止重復的標志,而應用程式
11、能采用事件對象來防止重復啟動,如device.exe。下面講述怎么設置基于hive的注冊表(如果保存系統(tǒng)hive的是fat文件系統(tǒng)):1、在pb中加入hive-based registry,如果是geode平臺,再加入bsp_enable_fsreghive環(huán)境變量。2、打開platform.reg,找到如下信息:; hive boot sectionhkey_local_machineinitbootvarssystemhive=documents and settingssystem.hvprofiledir=documents and settingsstart devmgr=dword
12、:0if bsp_enable_fsreghive start devmgr=dword:1endif ; end hive boot sectionsystemhive的值為系統(tǒng)hive文件的路徑。start devmgr是個布爾值,指示是否開始就執(zhí)行設備管理器device.exe,按照ce幫助文件的說法,只有想把系統(tǒng)hive存儲在對象存儲中才在此設置為0,所以一般都要設置為1。3、如果是多用戶,能在上述的注冊表位置下輸入defaultuser=,指定默認的用戶名。如果是單用戶系統(tǒng),能不設置。4、確保將包含系統(tǒng)hive的文件系統(tǒng)驅動程式的注冊表信息和存儲設備的驅動程式的注冊表信息被包含在“;
13、 hive boot section”和“; end hive boot section”之間,在這兩個語句之間的注冊表數(shù)據(jù)全部屬于引導hive。如果我們將系統(tǒng)hive文件system.hv存放在硬盤上,并采用fat文件系統(tǒng)。那么就要將hkey_local_machinesystemstoragemanagerfatfs和hkey_local_machinesystemstoragemanagerprofileshdprofile移動到“; hive boot section”下。5、在“; hive boot section”和“; end hive boot section”之間的所有驅動
14、程式的注冊表信息中都加入下列一個標志: flags=dword:1000這個標志是個位掩碼,他能和其他已存在的flags或運算。值1000表示此驅動程式只加載一次,這樣device.exe就不會把當前驅動程式加載兩次了。6、在包含系統(tǒng)hive的存儲設備的驅動程式的注冊表信息中,加入如下標志(假設是硬盤):hkey_local_machinesystemstoragemanagerprofileshdprofilemountflags=dword:2這個標志表示這個存儲設備包含系統(tǒng)hive文件。按照如上所述設置后的內核就能實現(xiàn)永久存儲注冊表數(shù)據(jù)了。對于保存注冊表數(shù)據(jù)的執(zhí)行動作在此必須闡述清晰:正
15、常情況下,ce能夠確保重要的注冊表數(shù)據(jù)能夠從內存刷到(flush)永久存儲器上。不過這并不能完全確保所有數(shù)據(jù)都能完整地保存而不丟失,所以要確保萬無一失,應該主動地調用regflushkey函數(shù)強制將內存中的數(shù)據(jù)刷到永久存儲器上。這個函數(shù)的參數(shù)只有一個,就是注冊表分支。ce還增加一個注冊表項(如下所示),他的作用是每當函數(shù)regclosekey被調用時都自動調用regflushkey函數(shù)。hkey_local_machineinitbootvarsregistryflags=dword:1如果ce在啟動過程中發(fā)現(xiàn)系統(tǒng)hive出現(xiàn)錯誤,他會自動刪除文件并創(chuàng)建一個默認的系統(tǒng)hive文件,如果出現(xiàn)下面
16、的注冊表項,說明發(fā)生了這種事情。windows ce下訪問物理內存的方法嵌入式設備與桌面pc的一個顯著不同是它的應用程序中通常需要直接訪問某一段物理內存,這在驅動程序中對物理內存的訪問尤為重要,尤其是像arm體系結構下,i/o端口也被映射成某一個物理內存地址。因此,與桌面版本windows相比,windows ce提供了相對簡單的物理內存訪問方式。無論是驅動程序還是應用程序都可以通過api訪問某一段物理內存。windows ce的有些函數(shù)中需要用到物理內存結構體physical_address, windows ce在ceddk.h中定義了physical_address,它其實是large_
17、integer類型,其定義如下:/ in ceddk.htypedef large_integer physical_address, *pphysical_address;/ in winnt.htypedef union _large_integerstruct dword lowpart; long highpart;longlong quadpart; large_integer;可見,windows ce中用64個bit來代表物理地址,對于大多數(shù)32位的cpu而言,只需要把它的highpart設置為0就可以了。如果要直接訪問某一個地址的物理內存,windows ce提供了virtua
18、lalloc()和virtualcopy()函數(shù),virtualalloc負責在虛擬內存空間內保留一段虛擬內存,而virtualcopy負責把一段物理內存和虛擬內存綁定,這樣,最終對物理內存的訪問還是通過虛擬地址進行。它們的聲明如下:/ 申請?zhí)摂M內存lpvoid virtualalloc(lpvoid lpaddress, / 希望的虛擬內存起始地址dword dwsize, / 以字節(jié)為單位的大小dword flallocationtype, / 申請類型,分為reserve和commitdword flprotect / 訪問權限);/ 把物理內存綁定到虛擬地址空間bool virtual
19、copy( lpvoid lpvdest, / 虛擬內存的目標地址lpvoid lpvsrc, / 物理內存地址dword cbsize, / 要綁定的大小dword fdwprotect / 訪問權限);virtualalloc對虛擬內存的申請分為兩步,保留mem_reserve和提交mem_commit。其中mem_reserve只是在進程的虛擬地址空間內保留一段,并不分配實際的物理內存,因此保留的虛擬內存并不能被應用程序直接使用。mem_commit階段才真正的為虛擬內存分配物理內存。下面的代碼顯示了如何使用virtualalloc和virtualcopy來訪問物理內存。因為virtua
20、lcopy負責把一段物理內存和虛擬內存綁定,所以virtualalloc的時候只需要對內存保留,沒有必要提交。fpdriverglobals = (pdriver_globals) virtualalloc( 0, driver_globals_physical_memory_size, mem_reserve, page_noaccess);if (fpdriverglobals = null) errormsg(driver_error_msg, (text( virtualalloc failed!rn); return;else if (!virtualcopy( (pvoid)fpd
21、riverglobals, (pvoid)(driver_globals_physical_memory_start), driver_globals_physical_memory_size, (page_readwrite | page_nocache) errormsg(driver_error_msg, (text(virtualcopy failed!rn); return; ceddk還提供了函數(shù)mmmapiospace用來把一段物理內存直接映射到虛擬內存。此函數(shù)的原形如下:pvoid mmmapiospace( physical_address physicaladdress,
22、/ 起始物理地址ulong numberofbytes, / 要映射的字節(jié)數(shù)boolean cacheenable / 是否緩存);其實,mmmapiospace函數(shù)內部也是調用virtualalloc和virtualcopy函數(shù)來實現(xiàn)物理地址到虛擬地址的映射的。mmmapiospace函數(shù)的原代碼是公開的,我們可以從%_winceroot%publiccommonoakdriversceddkddk_mapddk_map.c得到。從mmmapiospace的實現(xiàn)我們也可以看出virtualalloc和virtualcopy的用法:pvoid mmmapiospace ( in physica
23、l_address physicaladdress, in ulong numberofbytes, in boolean cacheenable )pvoid pvirtualaddress; ulonglong sourcephys; ulong sourcesize; bool bsuccess; sourcephys = physicaladdress.quadpart & (page_size - 1); sourcesize = numberofbytes + (physicaladdress.lowpart & (page_size - 1); pvirtualaddress =
24、 virtualalloc(0, sourcesize, mem_reserve, page_noaccess); if (pvirtualaddress != null) bsuccess = virtualcopy( pvirtualaddress, (pvoid)(sourcephys 8), sourcesize, page_physical | page_readwrite | (cacheenable ? 0 : page_nocache); if (bsuccess) (ulong)pvirtualaddress += physicaladdress.lowpart & (pag
25、e_size - 1); else virtualfree(pvirtualaddress, 0, mem_release); pvirtualaddress = null; return pvirtualaddress;此外,windows ce還供了allocphysmem函數(shù)和freephysmem函數(shù),用來申請和釋放一段連續(xù)的物理內存。函數(shù)可以保證申請的物理內存是連續(xù)的,如果函數(shù)成功,會返回虛擬內存的句柄和物理內存的起始地址。這對于dma設備尤為有用。在這里就不詳細介紹了,讀者可以參考windows ce的聯(lián)機文檔wince6.0注冊表windows ce 6.0有4個基本的注冊表鍵值
26、, hkey_classes_root, hkey_current_user, hkey_local_machine, hkey_users。其它的都是這4個注冊表的子鍵。我 們以一個內建的串口驅動為例,它在注冊表文件platform.reg中的描述如下: 其中prefix 和 dll項是必不可少的,prefix代表設備文件名前綴, 與index合用表示該設備的名稱,該注冊表子鍵的設備名稱就是com1:,該名稱可以用于createfile調用。dll則是動態(tài)鏈接庫名稱。 index為設備序號。flags為1表示系統(tǒng)啟動時不加載,需要應用程序自己加載,為0表示該驅動在系統(tǒng)啟動時加載。 hkey_
27、local_machinedriversbuiltinserial prefix=com dll=$(_tgtplat_pfx)_serial.dll flags=dword:0 index=dword:1在%wince dir%public%common%oak%inc%目錄下,文件cregedit.h中,定義了一個類cregistryedit來封裝了注冊表的操作。許多的硬件驅動,比如串口類,也繼承了cregistryedit類。還有一種方法是利用windows ce提供的api進行注冊表項的操作。方法一: 利用系統(tǒng)提供的注冊表類cregistryedit 類的定義在文件regedit.h中
28、。 在 構建函數(shù)中,會取得當前注冊表子鍵的handle句柄。有3個構造函數(shù),第一個是用全路徑,調用hkey = opendevicekey(text(hkey_local_machinedriversbuiltinserial)構造, 第二個是如果已知其父注冊表子鍵,調用regopenkeyex( hkey_local_machine, text(driversbuiltinserial), 0,0,&hkey). 第三種方法是用regcreatekeyex(). 析構函數(shù)中,調用regclosekey(hkey)關閉掉對注冊表子鍵的引用。 讀取注冊表項可以使用getregvalue方法,寫入
29、注冊表項使用regsetvalueex方法。其方法的實現(xiàn)也是通過windows ce api,具體可以參照下一個section。 reggetlist和regsetlist方法提供了對類型為reg_multi_sz和dword的value的讀寫操作。 其它類方法getwindowinfo, getisrinfo,getpciinfo獲取注冊表更多的信息。方法二: 利用windows ce api 為 了獲取一個注冊表鍵值,先要調用regopenkeyex。以上面內建串口驅動為例,regopenkey( hkey_local_machine, text(driversbuiltinserial)
30、, 0, 0, &hkey ), 其中hkey就是我們獲取的該注冊表子鍵的handle句柄。接下來對注冊表子鍵的操作就是通過hkey來實現(xiàn). 有了hkey, 就可以對注冊表子鍵的各個內容進行讀寫操作。如果要讀去子鍵的prefix, 調用函數(shù)regqueryvalueex(hkey, text(prefix), null, &lptype, &lpdata, &lpcbdata), lptype, lpdata為prefix返回類型和值,該例中,lptype = reg_sz, lpdata = text(com). lpcbdata當調用時,修飾限制lpdata的size in bytes,返
31、回時,為lpdata返回值的size。 對應于讀操作,寫操作是一個相反的過程,regsetvalueex(hkey, text(prefix), null, reg_sz, pbyte(text(tst), wcslen(text(tst)*2). 其中要寫入的項為prefix項,類型為reg_sz, 值為text(tst), 最后一個參數(shù)為寫入值得size in bytes. 注意第二個參數(shù),如果注冊表中存在該項,則改寫它的值。如果沒有,則新建一個注冊表項。 某些情況下,我們需要刪除一個注冊表項,只需調用regdeletekey(hkey, text(index)就可以刪除index注冊表項
32、。 要關閉一個注冊表子鍵,只需要調用regclosekey(hkey)就可以完成。總結: 關于注冊表有很多更加深入的使用,如regenumvalue. 更多有關注冊表項,可以查看msdn手冊。注冊表分兩種一種叫rom ,一種hive如果注冊表是固定的(每一臺設備是一樣的),可以在platform.reg,project.reg還有common.reg中先設置好,然后再重新build 如果需要保存一些個性化的信息,在h/w reset后還需要恢復這些信息,而且每一臺設備中注冊表是不一樣的,那就用mikemao(mikemao) 所說的方法,不過不是系統(tǒng)啟動后再寫一遍,而是在啟動的過程中就設定注冊
33、表。一般的產品很少用這種方法的,因為要保證h/w reset后回到出廠狀態(tài),不過我們公司的產品中就用了第二種方法,這種方法實現(xiàn)要復雜一點,有興趣的話再探討。問題解決:1 要把platform中得注冊表設置為hive 2 再代碼中保存的時候使用fulshkey()wince注冊表簡介在wince中支持兩種類型的注冊表:ram-based和hive-based,默認情況下使用的是ram-based注冊表。 1.ram-based注冊表 ram-based的注冊表是將所有的注冊表數(shù)據(jù)存儲在對象存儲(object store)中,也就是存放在ram里面。一般用在有電池備份ram的系統(tǒng)上面,也就是說,當
34、系統(tǒng)掉電以后,會自動切換成電池供電,此時ram還有供電,所以上面的數(shù)據(jù)不會丟失,這樣采用ram-based注冊表非常有效。ram-based注冊表多用于經(jīng)常熱啟動(warm boot)的設備上面,很少用在冷啟動(cold boot)設備上面。2.hive-based注冊表 hive-based的注冊表是將注冊表數(shù)據(jù)存成文件,也就是存在掉電不會丟失數(shù)據(jù)的磁盤上面,hive注冊表被分成兩部分:系統(tǒng)hive和用戶hive,也就是system.hv和user.hv。在一個多用戶系統(tǒng)中,會包含多個用戶hive,不同的用戶hive(user.hv)會在該用戶登陸的時候被加載,被注銷的時候卸載。實際上hiv
35、e-based的注冊表包含三個部分,我稱之為引導hive,系統(tǒng)hive和用戶hive,也就是boot.hv,system.hv和user.hv。boot.hv主要用于系統(tǒng)引導時候所需的注冊表設置,這部分設置不會被保存在磁盤上面,也就是說,在系統(tǒng)掉電以后就會丟失。實際上,這部分應該說是屬于ram-based注冊表,由于這部分數(shù)據(jù)不需要改動,所以也就無所謂了。system.hv存放關于系統(tǒng)的注冊表設置,user.hv存放和用戶相關的注冊表設置。一般在我們編譯wince系統(tǒng)的時候,platform builder會根據(jù)platform.reg文件中的注釋標簽來判斷哪些注冊表設置放入boot.hv中,
36、凡是在注釋標簽”;hive boot secton”和”;end hive boot section”之間的設置都會被放入boot.hv中,其他的都會放到default.hv和user.hv中。在wince第一次引導的時候,所有的.hv都會被放到ram中,wince系統(tǒng)會首先讀取boot.hv進行相關引導時候的設置,然后把default.hv和user.hv放到磁盤的指定路徑下面,這個路徑也是在注冊表中設置的,然后default.hv會被重命名為system.hv。當系統(tǒng)第二次啟動的時候,會比較磁盤上的.hv和內存中的.hv是否一致,如果不一致,會拷貝磁盤上面的.hv到內存中。我們可以看出,實
37、際上hive注冊表在運行的時候也是放在ram中的,這樣速度比較快。啟動的時候會從磁盤上讀出,在用戶更改注冊表以后,會被保存在磁盤上,保存的時機也是可以設置的,可以選擇在用戶更改后立刻保存到磁盤上,也可以選擇在reboot的時候保存。wince注冊表應用/author:/norains/date:/tuesday 25-april -2006/=1.讓桌面不顯示我的電腦,回收站刪除以下鍵值:hkey_local_machineexplorerdesktop000214a0-0000-0000-c000-000000000046 ;my computer000214a1-0000-0000-c00
38、0-000000000046 ;recycle bin存在這兩個鍵值的文件有:$(_winceroot)publicshelloakfilesshell.reg$(_winceroot)publicwceshellfeoakfileswceshellfe.reg$(_winceroot)publicwceshellfeoakfileswceshellfe88.reg2.直接刪除文件,不放回回收站hkey_local_machineexploreruserecyclebin=dword:0 ;設置0為直接刪除;設置1為放入回收站3.修改xp皮膚的系統(tǒng)界面顏色如果選擇了xp skin,則在控制面板
39、的顯示選項中是無法更改一些窗口的顏色的.不過,我們倒是可以通過更改$(_winceroot)publiccommonoakfilescommon.reg文件中的xp顏色參數(shù)來達到更改窗口顏色的目的.原xp樣式的顏色參數(shù)如下:hkey_local_machinesystemgwe syscolor=hex: 00,00,00,00, 3a,6e,a5,00, 00,00,00,00, 00,00,00,00, ef,eb,de,00, ff,ff,ff,00, 00,00,00,00, 00,00,00,00, 00,00,00,00, ff,ff,ff,00, c0,c0,c0,00, c0,
40、c0,c0,00, 80,80,80,00, 31,69,c6,00, ff,ff,ff,00, ef,eb,de,00, ad,aa,9c,00, 80,80,80,00, 00,00,00,00, 00,00,00,00, ff,ff,ff,00, 73,6d,63,00, ff,ff,ff,00, 00,00,00,00, ff,ff,e1,00, ef,eb,de,00, 00,00,00,00代表的意思是:0 color_scrollbar color of the gray area of a scroll bar.1 color_background background col
41、or of the desktop window.2 color_activecaption color of the title bar of an active window.3 color_inactivecaption color of the title bar of an inactive window.4 color_menu background color of a menu.5 color_window background color of a window.6 color_windowframe color of a window frame.7 color_menut
42、ext color of the text in a menu.8 color_windowtext color of the text in a window.9 color_captiontext color of the text in a title bar and of the size box and scroll bar arrow box.10 color_activeborder color of the border of an active window.11 color_inactiveborder color of the border of an inactive
43、window.12 color_appworkspace background color of multiple document interface (mdi) applications.13 color_highlight color of an item selected in a control.14 color_highlighttext color of the text of an item selected in a control.15 color_btnface color of the face of a button.16 color_btnshadow shadow
44、 color of buttons for edges that face away from the light source.17 color_graytext color of shaded text. this color is set to 0 if the current display driver does not support a solid gray color.18 color_btntext color of the text for push buttons.19 color_inactivecaptiontext color of the text in the
45、title bar of an inactive window.20 color_btnhighlight highlight color of buttons for edges that face the light source.21 color_3ddkshadow color of the dark shadow for three-dimensional display elements.22 color_3dlight highlight color of three-dimensional display elements for edges that face the lig
46、ht source.23 color_infotext color of the text for tooltip controls.24 color_infobk background color for tooltip controls.25 color_static background color for static controls and dialog boxes. supported in windows ce 2.0 and later.26 color_statictext color of the text for static controls. supported i
47、n windows ce 2.0 and later.27 color_gradientactivecaption color of the title bar of an active window that is filled with a color gradient.28 color_gradientinactivecaption4.文件夾映射更改假設我們要將桌面文件夾從根目錄(在這里指的是ram空間)移動到某個外部儲存器harddisk中,可以按如下步驟:1.將$(_winceroot)publiccommonoakfilesintltrns0804common.str文件中的loc
48、_path_desktop宏定義改為harddiskwindows桌面2.然后將所有.dat文件中關于loc_desktop_dir的選項,全部在windows前添加harddisk,如:directory(windowsloc_desktop_dir):-file(loc_internetexplorer_lnk, windowsiesample.lnk)改為:directory(harddiskwindowsloc_desktop_dir):-file(loc_internetexplorer_lnk, windowsiesample.lnk)即可.如果有創(chuàng)建文件夾的話,也要改:如:roo
49、t:-directory(loc_programfiles_dir)改為:root:-directory(harddiskloc_programfiles_dir)wince 注冊表文件 platform.reg 詳解一、hive 注冊表功能 hkey_local_machineinitbootvars systemhive=documents and settingssystem.hv profiledir=documents and settings defaultuser=default start devmgr=dword:1 flags=dword:3 registryflags=d
50、word:1 說明: systemhiv 系統(tǒng)hive文件的保存路徑與文件名 profiledir 用戶配置文件保存路徑 defaultuser 默認加載的用戶hive文件 start devmgr 啟動時加載設備管理器 flags 這個值替代start devmgr,可以在包括start devmgr的功能前提下提供更精確的控制 flag bit setting description 0x00000001 starts storage manager in phase one of startup for hive-based registry (為了實現(xiàn)hive,啟動時加載存儲管理器)
51、0x00000002 starts device manager in phase one of startup for hive-based registry (為了實現(xiàn)hive,啟動時加載設備管理器) 0x00000004 starts storage manager in phase one of startup for registry in external rom, such as binfs (為了注冊擴展rom例如binfs,在啟動時加載存儲管理器) 0x00000008 starts device manager in phase one of startup for registry in external rom, such as binfs (為了注冊擴展rom例如binfs,在啟動時加載設備管理器) registryflags 在調用regclosekey函數(shù)時自動調用regflushkey函數(shù),用于自動保存注冊表 設備管理器會加載 hkey_local_machinedriversbuiltin 下的所有設備驅動 二、存儲管理 hkey_local_machinesystemstoragemanagerprofiles automount=dword:1 a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度路燈照明設備綠色供應鏈采購合同4篇
- 二零二五版環(huán)保設施采購合同范本參考3篇
- 2025年度高校創(chuàng)新創(chuàng)業(yè)基地共建合同3篇
- 2025年度鋁材產品安全檢測與認證合同4篇
- 2025年校園食堂餐飲托管服務合同范本2篇
- 聘用合同范本
- 2025年度綠色建筑項目財產贈與合同2篇
- 白糖采購合同
- 2025年度碎石加工行業(yè)信息化建設合同
- 2025年度大米加工企業(yè)品牌形象改造與升級合同3篇
- 地系梁工程施工方案
- 藏文基礎-教你輕輕松松學藏語(西藏大學)知到智慧樹章節(jié)答案
- 2024電子商務平臺用戶隱私保護協(xié)議3篇
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 英語 含答案
- 電力工程施工安全風險評估與防控
- 醫(yī)學教程 常見體表腫瘤與腫塊課件
- 內分泌系統(tǒng)異常與虛勞病關系
- 智聯(lián)招聘在線測評題
- DB3418T 008-2019 宣紙潤墨性感官評判方法
- 【魔鏡洞察】2024藥食同源保健品滋補品行業(yè)分析報告
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題及答案
評論
0/150
提交評論