資料介紹
增加對(duì)大容量物理內(nèi)存的支持和永久存儲(chǔ)注冊(cè)表是在定制內(nèi)核工作中常遇到的問(wèn)題。本篇文章將對(duì)這兩個(gè)方面闡述相關(guān)的知識(shí)并指導(dǎo)讀者如何在PB中實(shí)現(xiàn)。
對(duì)大容量物理內(nèi)存的支持
在PC上增加物理內(nèi)存是很方便的,插上內(nèi)存條后只要自檢程序識(shí)別,那么桌面操作系統(tǒng)就能夠支持。而在基于CE的產(chǎn)品上就沒(méi)那么簡(jiǎn)單了。如果物理內(nèi)存大于64MB,就要在定制內(nèi)核時(shí)做一些工作。
一旦內(nèi)存管理單元(MMU)開始工作,CPU就不再直接訪問(wèn)物理內(nèi)存了,對(duì)于運(yùn)行在x86和ARM系列CPU上的CE內(nèi)核來(lái)說(shuō),必須先確立物理內(nèi)存地址同虛擬內(nèi)存地址的映射關(guān)系。這種關(guān)系實(shí)際是在一個(gè)名為OEMAddressTable的表中定義的。這個(gè)表在前面的文章中已經(jīng)提到過(guò)。CE提供了兩種虛擬地址映射方法,分別為靜態(tài)映射和動(dòng)態(tài)映射,這個(gè)表屬于靜態(tài)映射方法。靜態(tài)映射的虛擬地址空間只能由內(nèi)核訪問(wèn),而動(dòng)態(tài)映射的地址空間可以由用戶模式的應(yīng)用程序訪問(wèn)。OEMAddressTable在文件%_WINCEROOT%PublicCommonOakCspi486OalOEMInit.asm中。在這個(gè)文件的最后有一段代碼:
; RAM 0x80000000 -》 0x00000000, size 64M
dd 80000000h, 0, 04000000h
dd 0, 0, 0
這段代碼表示將虛擬地址80000000映射到物理地址0,大小為64MB。將04000000h改成實(shí)際的物理內(nèi)存大小,然后保存。接著單擊PB菜單“Build”-“Open Build Release Directory”,在命令行中先用cd命令進(jìn)入上述目錄,如:
cd %_WINCEROOT%PublicCommonOakCspi486Oal
然后鍵入下列命令:
build -c
sysgen i486oal
build命令根據(jù)配置文件內(nèi)容編譯整個(gè)目錄,sysgen批處理將build 編譯的文件i486oal.lib文件復(fù)制到CE的安裝目錄和內(nèi)核工程目錄下。我安裝的BSP是基于x86的,所以相應(yīng)目錄為%_WINCEROOT%PUBLICCOMMONOAKLIBX86RETAIL和%_PROJECTROOT%cesysgenoaklibx86 etail兩個(gè)目錄。上一步做完之后,接著開始修改config.bib文件。在以前的文章中講過(guò)在config.bib文件中定義內(nèi)存區(qū)域。在config.bib中預(yù)設(shè)的配置沒(méi)有超過(guò)64MB的,所以要自己手工添加??筛鶕?jù)原有的IMGRAM64配置更改,原有的IMGRAM64如下:
; 64 MB of RAM (note: AUTOSIZE will adjust boundary)
IF IMGRAM64
NK 80220000 009E0000 RAMIMAGE
RAM 80C00000 03000000 RAM
UMABUF 83C00000 00400000 RESERVED
ENDIF
假如要支持128MB,更改如下:
IF IMGRAM16 !
IF IMGRAM32 !
IF IMGRAM64 !
NK 80220000 009E0000 RAMIMAGE
RAM 80C00000 07000000 RAM
UMABUF 87C00000 00400000 RESERVED
ENDIF
ENDIF
ENDIF
在這里沒(méi)有更改NK的大小,只是修改了RAM的大小。
在config.bib定義之后,還可以在OAL層通過(guò)變量或者函數(shù)更改物理內(nèi)存的大小,適合設(shè)備可能出現(xiàn)增加或減小內(nèi)存的情況。CE的幫助文檔介紹了幾種方法,這里只提一下CreateStaticMapping函數(shù)。CreateStaticMapping函數(shù)作為config.bib文件的補(bǔ)充,適合在用戶模式的應(yīng)用程序或驅(qū)動(dòng)程序中調(diào)用,調(diào)用這個(gè)函數(shù)能夠?qū)⒅付ㄊ椎刂返奈锢韮?nèi)存塊映射到虛擬地址空間,函數(shù)返回虛擬地址。虛擬地址范圍在C400 0000 到 E000 0000之間,這是內(nèi)核的地址空間,只能由內(nèi)核訪問(wèn)。相比較VirtualCopy函數(shù)用于動(dòng)態(tài)地將指定首地址的物理內(nèi)存塊映射到虛擬地址空間,這個(gè)虛擬地址空間一般為用戶進(jìn)程的地址空間,因?yàn)閂irtualCopy函數(shù)被設(shè)計(jì)專用于驅(qū)動(dòng)程序調(diào)用,它常被用于將一個(gè)物理內(nèi)存塊映射到不同的虛擬地址空間。
實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù)
關(guān)于注冊(cè)表在前面的文章中已經(jīng)介紹過(guò)了,這里只講述如何實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù)。
注冊(cè)表類型分為基于對(duì)象存儲(chǔ)的注冊(cè)表和基于HIVE的注冊(cè)表,在定制內(nèi)核的時(shí)候只能選擇其中一種。從理論上講這兩種注冊(cè)表都能夠?qū)崿F(xiàn)永久保存注冊(cè)表數(shù)據(jù),但是采用不同的類型會(huì)影響CE的啟動(dòng)順序和啟動(dòng)速度,還會(huì)影響內(nèi)存的使用量。我還是趨向于采用基于HIVE的注冊(cè)表來(lái)實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù),這也是一個(gè)發(fā)展趨勢(shì)。在講解之前先簡(jiǎn)單描述如果CE采用基于HIVE的注冊(cè)表,那么在啟動(dòng)時(shí)如何加載已經(jīng)保存的注冊(cè)表數(shù)據(jù):
1、nk.exe執(zhí)行,啟動(dòng)filesys.exe。
2、filesys.exe加載引導(dǎo)HIVE,此時(shí)引導(dǎo)HIVE位于nk.bin解壓之后的文件中。
3、filesys.exe啟動(dòng)device.exe,之后處于等待狀態(tài),等待device.exe將包含系統(tǒng)HIVE的文件系統(tǒng)和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序加載完畢。而這個(gè)文件系統(tǒng)和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序存在于引導(dǎo)HIVE中。
4、device.exe加載上述所說(shuō)的文件系統(tǒng)驅(qū)動(dòng)程序和存儲(chǔ)設(shè)備驅(qū)動(dòng)程序,使之開始工作。之后device.exe處于等待狀態(tài)。
5、filesys.exe被喚醒,加載并且安裝系統(tǒng)HIVE。之后filesys.exe處于等待狀態(tài)。
6、nk.exe按照系統(tǒng)HIVE的信息開始執(zhí)行初始化工作。其中包括加載驅(qū)動(dòng)程序和啟動(dòng)一些應(yīng)用程序。其中加載驅(qū)動(dòng)程序一般由device.exe執(zhí)行,而啟動(dòng)應(yīng)用程序由filesys.exe執(zhí)行。這時(shí)device.exe和filesys.exe已經(jīng)被喚醒。
因?yàn)橐龑?dǎo)HIVE和系統(tǒng)HIVE肯定有重復(fù)的地方,所以可能出現(xiàn)重復(fù)加載了驅(qū)動(dòng)程序或者重復(fù)啟動(dòng)了應(yīng)用程序。為此,CE允許在描述驅(qū)動(dòng)程序的注冊(cè)表信息中加入防止重復(fù)的標(biāo)志,而應(yīng)用程序可以采用事件對(duì)象來(lái)防止重復(fù)啟動(dòng),如device.exe。
下面講述如何設(shè)置基于HIVE的注冊(cè)表(假如保存系統(tǒng)HIVE的是FAT文件系統(tǒng)):
1、在PB中加入“Hive-based Registry”,如果是Geode平臺(tái),再加入BSP_ENABLE_FSREGHIVE環(huán)境變量。
2、打開platform.reg,找到如下信息:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINEinitBootVars]
“SYSTEMHIVE”=“Documents and Settingssystem.hv”
“PROFILEDIR”=“Documents and Settings”
“Start DevMgr”=dword:0
IF BSP_ENABLE_FSREGHIVE
“Start DevMgr”=dword:1
ENDIF
; END HIVE BOOT SECTION
“SYSTEMHIVE”的值為系統(tǒng)HIVE文件的路徑。“Start DevMgr”是一個(gè)布爾值,指示是否開始就執(zhí)行設(shè)備管理器device.exe,按照CE幫助文檔的說(shuō)法,只有想把系統(tǒng)HIVE存儲(chǔ)在對(duì)象存儲(chǔ)中才在此設(shè)置為0,所以一般都要設(shè)置為1。
3、如果是多用戶,可以在上述的注冊(cè)表位置下輸入“DefaultUser”=“《username》”,指定默認(rèn)的用戶名。如果是單用戶系統(tǒng),可以不設(shè)置。
4、保證將包含系統(tǒng)HIVE的文件系統(tǒng)驅(qū)動(dòng)程序的注冊(cè)表信息和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序的注冊(cè)表信息被包含在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之間,在這兩個(gè)語(yǔ)句之間的注冊(cè)表數(shù)據(jù)全部屬于引導(dǎo)HIVE。假如我們將系統(tǒng)HIVE文件system.hv存放在硬盤上,并采用FAT文件系統(tǒng)。那么就要將[HKEY_LOCAL_MACHINESystemStorageManagerFATFS]和[HKEY_LOCAL_MACHINESystemStorageManagerProfilesHDProfile]移動(dòng)到“; HIVE BOOT SECTION”下。
5、在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之間的所有驅(qū)動(dòng)程序的注冊(cè)表信息中都加入下列一個(gè)標(biāo)志:
“Flags”=dword:1000
這個(gè)標(biāo)志是一個(gè)位掩碼,它可以和其它已經(jīng)存在的“Flags”或運(yùn)算。值1000表示此驅(qū)動(dòng)程序只加載一次,這樣device.exe就不會(huì)把當(dāng)前驅(qū)動(dòng)程序加載兩次了。
6、在包含系統(tǒng)HIVE的存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序的注冊(cè)表信息中,加入如下標(biāo)志(假設(shè)是硬盤):
[HKEY_LOCAL_MACHINESystemStorageManagerProfilesHDProfile]
“MountFlags”=dword:2
這個(gè)標(biāo)志表示這個(gè)存儲(chǔ)設(shè)備包含系統(tǒng)HIVE文件。
按照如上所述設(shè)置后的內(nèi)核就能實(shí)現(xiàn)永久存儲(chǔ)注冊(cè)表數(shù)據(jù)了。對(duì)于保存注冊(cè)表數(shù)據(jù)的執(zhí)行動(dòng)作在此必須闡述清楚:
正常情況下,CE能夠保證重要的注冊(cè)表數(shù)據(jù)能夠從內(nèi)存刷到(Flush)永久存儲(chǔ)器上。但是這并不能完全保證所有數(shù)據(jù)都能完整地保存而不丟失,所以要保證萬(wàn)無(wú)一失,應(yīng)該主動(dòng)地調(diào)用RegFlushKey函數(shù)強(qiáng)制將內(nèi)存中的數(shù)據(jù)刷到永久存儲(chǔ)器上。這個(gè)函數(shù)的參數(shù)只有一個(gè),就是注冊(cè)表分支。CE還增加一個(gè)注冊(cè)表項(xiàng)(如下所示),它的作用是每當(dāng)函數(shù)RegCloseKey被調(diào)用時(shí)都自動(dòng)調(diào)用RegFlushKey函數(shù)。
?。跦KEY_LOCAL_MACHINEinitBootVars]
“RegistryFlags”=dword:1
如果CE在啟動(dòng)過(guò)程中發(fā)現(xiàn)系統(tǒng)HIVE出現(xiàn)錯(cuò)誤,它會(huì)自動(dòng)刪除文件并創(chuàng)建一個(gè)默認(rèn)的系統(tǒng)HIVE文件,如果出現(xiàn)下面的注冊(cè)表項(xiàng),說(shuō)明發(fā)生了這種事情。
?。跦KEY_LOCAL_MACHINE]
“RegPersisted”=dword:1
?
對(duì)大容量物理內(nèi)存的支持
在PC上增加物理內(nèi)存是很方便的,插上內(nèi)存條后只要自檢程序識(shí)別,那么桌面操作系統(tǒng)就能夠支持。而在基于CE的產(chǎn)品上就沒(méi)那么簡(jiǎn)單了。如果物理內(nèi)存大于64MB,就要在定制內(nèi)核時(shí)做一些工作。
一旦內(nèi)存管理單元(MMU)開始工作,CPU就不再直接訪問(wèn)物理內(nèi)存了,對(duì)于運(yùn)行在x86和ARM系列CPU上的CE內(nèi)核來(lái)說(shuō),必須先確立物理內(nèi)存地址同虛擬內(nèi)存地址的映射關(guān)系。這種關(guān)系實(shí)際是在一個(gè)名為OEMAddressTable的表中定義的。這個(gè)表在前面的文章中已經(jīng)提到過(guò)。CE提供了兩種虛擬地址映射方法,分別為靜態(tài)映射和動(dòng)態(tài)映射,這個(gè)表屬于靜態(tài)映射方法。靜態(tài)映射的虛擬地址空間只能由內(nèi)核訪問(wèn),而動(dòng)態(tài)映射的地址空間可以由用戶模式的應(yīng)用程序訪問(wèn)。OEMAddressTable在文件%_WINCEROOT%PublicCommonOakCspi486OalOEMInit.asm中。在這個(gè)文件的最后有一段代碼:
; RAM 0x80000000 -》 0x00000000, size 64M
dd 80000000h, 0, 04000000h
dd 0, 0, 0
這段代碼表示將虛擬地址80000000映射到物理地址0,大小為64MB。將04000000h改成實(shí)際的物理內(nèi)存大小,然后保存。接著單擊PB菜單“Build”-“Open Build Release Directory”,在命令行中先用cd命令進(jìn)入上述目錄,如:
cd %_WINCEROOT%PublicCommonOakCspi486Oal
然后鍵入下列命令:
build -c
sysgen i486oal
build命令根據(jù)配置文件內(nèi)容編譯整個(gè)目錄,sysgen批處理將build 編譯的文件i486oal.lib文件復(fù)制到CE的安裝目錄和內(nèi)核工程目錄下。我安裝的BSP是基于x86的,所以相應(yīng)目錄為%_WINCEROOT%PUBLICCOMMONOAKLIBX86RETAIL和%_PROJECTROOT%cesysgenoaklibx86 etail兩個(gè)目錄。上一步做完之后,接著開始修改config.bib文件。在以前的文章中講過(guò)在config.bib文件中定義內(nèi)存區(qū)域。在config.bib中預(yù)設(shè)的配置沒(méi)有超過(guò)64MB的,所以要自己手工添加??筛鶕?jù)原有的IMGRAM64配置更改,原有的IMGRAM64如下:
; 64 MB of RAM (note: AUTOSIZE will adjust boundary)
IF IMGRAM64
NK 80220000 009E0000 RAMIMAGE
RAM 80C00000 03000000 RAM
UMABUF 83C00000 00400000 RESERVED
ENDIF
假如要支持128MB,更改如下:
IF IMGRAM16 !
IF IMGRAM32 !
IF IMGRAM64 !
NK 80220000 009E0000 RAMIMAGE
RAM 80C00000 07000000 RAM
UMABUF 87C00000 00400000 RESERVED
ENDIF
ENDIF
ENDIF
在這里沒(méi)有更改NK的大小,只是修改了RAM的大小。
在config.bib定義之后,還可以在OAL層通過(guò)變量或者函數(shù)更改物理內(nèi)存的大小,適合設(shè)備可能出現(xiàn)增加或減小內(nèi)存的情況。CE的幫助文檔介紹了幾種方法,這里只提一下CreateStaticMapping函數(shù)。CreateStaticMapping函數(shù)作為config.bib文件的補(bǔ)充,適合在用戶模式的應(yīng)用程序或驅(qū)動(dòng)程序中調(diào)用,調(diào)用這個(gè)函數(shù)能夠?qū)⒅付ㄊ椎刂返奈锢韮?nèi)存塊映射到虛擬地址空間,函數(shù)返回虛擬地址。虛擬地址范圍在C400 0000 到 E000 0000之間,這是內(nèi)核的地址空間,只能由內(nèi)核訪問(wèn)。相比較VirtualCopy函數(shù)用于動(dòng)態(tài)地將指定首地址的物理內(nèi)存塊映射到虛擬地址空間,這個(gè)虛擬地址空間一般為用戶進(jìn)程的地址空間,因?yàn)閂irtualCopy函數(shù)被設(shè)計(jì)專用于驅(qū)動(dòng)程序調(diào)用,它常被用于將一個(gè)物理內(nèi)存塊映射到不同的虛擬地址空間。
實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù)
關(guān)于注冊(cè)表在前面的文章中已經(jīng)介紹過(guò)了,這里只講述如何實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù)。
注冊(cè)表類型分為基于對(duì)象存儲(chǔ)的注冊(cè)表和基于HIVE的注冊(cè)表,在定制內(nèi)核的時(shí)候只能選擇其中一種。從理論上講這兩種注冊(cè)表都能夠?qū)崿F(xiàn)永久保存注冊(cè)表數(shù)據(jù),但是采用不同的類型會(huì)影響CE的啟動(dòng)順序和啟動(dòng)速度,還會(huì)影響內(nèi)存的使用量。我還是趨向于采用基于HIVE的注冊(cè)表來(lái)實(shí)現(xiàn)永久保存注冊(cè)表數(shù)據(jù),這也是一個(gè)發(fā)展趨勢(shì)。在講解之前先簡(jiǎn)單描述如果CE采用基于HIVE的注冊(cè)表,那么在啟動(dòng)時(shí)如何加載已經(jīng)保存的注冊(cè)表數(shù)據(jù):
1、nk.exe執(zhí)行,啟動(dòng)filesys.exe。
2、filesys.exe加載引導(dǎo)HIVE,此時(shí)引導(dǎo)HIVE位于nk.bin解壓之后的文件中。
3、filesys.exe啟動(dòng)device.exe,之后處于等待狀態(tài),等待device.exe將包含系統(tǒng)HIVE的文件系統(tǒng)和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序加載完畢。而這個(gè)文件系統(tǒng)和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序存在于引導(dǎo)HIVE中。
4、device.exe加載上述所說(shuō)的文件系統(tǒng)驅(qū)動(dòng)程序和存儲(chǔ)設(shè)備驅(qū)動(dòng)程序,使之開始工作。之后device.exe處于等待狀態(tài)。
5、filesys.exe被喚醒,加載并且安裝系統(tǒng)HIVE。之后filesys.exe處于等待狀態(tài)。
6、nk.exe按照系統(tǒng)HIVE的信息開始執(zhí)行初始化工作。其中包括加載驅(qū)動(dòng)程序和啟動(dòng)一些應(yīng)用程序。其中加載驅(qū)動(dòng)程序一般由device.exe執(zhí)行,而啟動(dòng)應(yīng)用程序由filesys.exe執(zhí)行。這時(shí)device.exe和filesys.exe已經(jīng)被喚醒。
因?yàn)橐龑?dǎo)HIVE和系統(tǒng)HIVE肯定有重復(fù)的地方,所以可能出現(xiàn)重復(fù)加載了驅(qū)動(dòng)程序或者重復(fù)啟動(dòng)了應(yīng)用程序。為此,CE允許在描述驅(qū)動(dòng)程序的注冊(cè)表信息中加入防止重復(fù)的標(biāo)志,而應(yīng)用程序可以采用事件對(duì)象來(lái)防止重復(fù)啟動(dòng),如device.exe。
下面講述如何設(shè)置基于HIVE的注冊(cè)表(假如保存系統(tǒng)HIVE的是FAT文件系統(tǒng)):
1、在PB中加入“Hive-based Registry”,如果是Geode平臺(tái),再加入BSP_ENABLE_FSREGHIVE環(huán)境變量。
2、打開platform.reg,找到如下信息:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINEinitBootVars]
“SYSTEMHIVE”=“Documents and Settingssystem.hv”
“PROFILEDIR”=“Documents and Settings”
“Start DevMgr”=dword:0
IF BSP_ENABLE_FSREGHIVE
“Start DevMgr”=dword:1
ENDIF
; END HIVE BOOT SECTION
“SYSTEMHIVE”的值為系統(tǒng)HIVE文件的路徑。“Start DevMgr”是一個(gè)布爾值,指示是否開始就執(zhí)行設(shè)備管理器device.exe,按照CE幫助文檔的說(shuō)法,只有想把系統(tǒng)HIVE存儲(chǔ)在對(duì)象存儲(chǔ)中才在此設(shè)置為0,所以一般都要設(shè)置為1。
3、如果是多用戶,可以在上述的注冊(cè)表位置下輸入“DefaultUser”=“《username》”,指定默認(rèn)的用戶名。如果是單用戶系統(tǒng),可以不設(shè)置。
4、保證將包含系統(tǒng)HIVE的文件系統(tǒng)驅(qū)動(dòng)程序的注冊(cè)表信息和存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序的注冊(cè)表信息被包含在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之間,在這兩個(gè)語(yǔ)句之間的注冊(cè)表數(shù)據(jù)全部屬于引導(dǎo)HIVE。假如我們將系統(tǒng)HIVE文件system.hv存放在硬盤上,并采用FAT文件系統(tǒng)。那么就要將[HKEY_LOCAL_MACHINESystemStorageManagerFATFS]和[HKEY_LOCAL_MACHINESystemStorageManagerProfilesHDProfile]移動(dòng)到“; HIVE BOOT SECTION”下。
5、在“; HIVE BOOT SECTION”和“; END HIVE BOOT SECTION”之間的所有驅(qū)動(dòng)程序的注冊(cè)表信息中都加入下列一個(gè)標(biāo)志:
“Flags”=dword:1000
這個(gè)標(biāo)志是一個(gè)位掩碼,它可以和其它已經(jīng)存在的“Flags”或運(yùn)算。值1000表示此驅(qū)動(dòng)程序只加載一次,這樣device.exe就不會(huì)把當(dāng)前驅(qū)動(dòng)程序加載兩次了。
6、在包含系統(tǒng)HIVE的存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序的注冊(cè)表信息中,加入如下標(biāo)志(假設(shè)是硬盤):
[HKEY_LOCAL_MACHINESystemStorageManagerProfilesHDProfile]
“MountFlags”=dword:2
這個(gè)標(biāo)志表示這個(gè)存儲(chǔ)設(shè)備包含系統(tǒng)HIVE文件。
按照如上所述設(shè)置后的內(nèi)核就能實(shí)現(xiàn)永久存儲(chǔ)注冊(cè)表數(shù)據(jù)了。對(duì)于保存注冊(cè)表數(shù)據(jù)的執(zhí)行動(dòng)作在此必須闡述清楚:
正常情況下,CE能夠保證重要的注冊(cè)表數(shù)據(jù)能夠從內(nèi)存刷到(Flush)永久存儲(chǔ)器上。但是這并不能完全保證所有數(shù)據(jù)都能完整地保存而不丟失,所以要保證萬(wàn)無(wú)一失,應(yīng)該主動(dòng)地調(diào)用RegFlushKey函數(shù)強(qiáng)制將內(nèi)存中的數(shù)據(jù)刷到永久存儲(chǔ)器上。這個(gè)函數(shù)的參數(shù)只有一個(gè),就是注冊(cè)表分支。CE還增加一個(gè)注冊(cè)表項(xiàng)(如下所示),它的作用是每當(dāng)函數(shù)RegCloseKey被調(diào)用時(shí)都自動(dòng)調(diào)用RegFlushKey函數(shù)。
?。跦KEY_LOCAL_MACHINEinitBootVars]
“RegistryFlags”=dword:1
如果CE在啟動(dòng)過(guò)程中發(fā)現(xiàn)系統(tǒng)HIVE出現(xiàn)錯(cuò)誤,它會(huì)自動(dòng)刪除文件并創(chuàng)建一個(gè)默認(rèn)的系統(tǒng)HIVE文件,如果出現(xiàn)下面的注冊(cè)表項(xiàng),說(shuō)明發(fā)生了這種事情。
?。跦KEY_LOCAL_MACHINE]
“RegPersisted”=dword:1
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 深入解析Linux下 Platform_device 及Platform_driver
- 科技論文摘要編寫要點(diǎn)分析 0次下載
- 開關(guān)電源的PCB電磁兼容設(shè)計(jì)要點(diǎn)分析
- 自適應(yīng)平臺(tái)Adaptive Platform資料匯總 2次下載
- 555電路圖要點(diǎn)分析及經(jīng)典實(shí)例 132次下載
- 電動(dòng)汽車電池的六大要點(diǎn)問(wèn)題 10次下載
- 開關(guān)電源的PCB電磁兼容設(shè)計(jì)要點(diǎn)分析 44次下載
- 高速電路設(shè)計(jì)實(shí)踐PDF電子教材免費(fèi)下載 421次下載
- FPGA視頻教程之SOPC builder的詳細(xì)基礎(chǔ)知識(shí)說(shuō)明 8次下載
- ArcGIS WebApp Builder安裝教程 0次下載
- Platform Builder集成開發(fā)環(huán)境研究 1次下載
- DSP Builder下載入口 116次下載
- DSP Builder設(shè)計(jì)深入 54次下載
- ARM嵌入式WINDOWS CE實(shí)踐教程
- 基于C++ Builder與LabWindows/CVI平臺(tái)
- 【GD32 MCU 入門教程】一、GD32 MCU 開發(fā)環(huán)境搭建(3)使用 Embedded Builder 開發(fā) GD32 1064次閱讀
- SiC驅(qū)動(dòng)電源設(shè)計(jì)要點(diǎn)(變壓器部分) 1839次閱讀
- 選擇PLC系統(tǒng)的步驟和要點(diǎn) 751次閱讀
- 海思Hi3566V100 SDIO硬件設(shè)計(jì)要點(diǎn) 2910次閱讀
- 一文總結(jié)linux的platform驅(qū)動(dòng) 1199次閱讀
- 什么是eNSP?華為網(wǎng)絡(luò)仿真平臺(tái)eNSP的使用方法 1.6w次閱讀
- Lombok同時(shí)使用@Data和@Builder的一個(gè)必須要避開的巨坑 2029次閱讀
- pytorch實(shí)現(xiàn)斷電繼續(xù)訓(xùn)練時(shí)需要注意的要點(diǎn) 1447次閱讀
- 基于DSP Builder的小波變換設(shè)計(jì)實(shí)現(xiàn) 5077次閱讀
- USB硬件EMC設(shè)計(jì)要點(diǎn)分享 5973次閱讀
- 變頻器的故障分析和解決 實(shí)踐檢驗(yàn)、理論知識(shí)及維修水平 4255次閱讀
- 高過(guò)載變壓器結(jié)構(gòu)設(shè)計(jì)要點(diǎn)及思路詳解(農(nóng)網(wǎng)配電) 3734次閱讀
- 在智能制造實(shí)踐過(guò)程中,數(shù)據(jù)就是燃料,分析就是引擎 3794次閱讀
- 基于微小液體流量計(jì)選型的5大要點(diǎn)分析 3814次閱讀
- SATA支持ATAPI的設(shè)計(jì)要點(diǎn) 1843次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論