在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > HIVE注冊表恢復(fù)出廠設(shè)置

            HIVE注冊表恢復(fù)出廠設(shè)置

            作者: 時(shí)間:2011-02-24 來源:網(wǎng)絡(luò) 收藏

            Hive組件具有保存注冊表功能。 就是使用了hive, 注冊表修改后可以保存。

            有時(shí)候也碰上想恢復(fù)注冊表的情形。 我在調(diào)試一個(gè)沒有l(wèi)cd的設(shè)備, 我使用pocket controller工具遠(yuǎn)程抓屏, 如果想每次都能使用這個(gè)工具,就會需要恢復(fù)注冊表出廠設(shè)置。(注冊表不是引起這個(gè)的原因,但卻是個(gè)解決辦法, 原因具體就不說了)。


            如何恢復(fù)注冊表?幫助里面搜索一下IOCTL_HAL_GET_HIVE_CLEAN_FLAG關(guān)鍵字。Filesys.exe啟動時(shí)候會使用這個(gè)命令詢問oem是否刪除重建注冊表,返回TRUE就是執(zhí)行刪除了。


            Eboot可 以傳遞參數(shù)給nk,其實(shí)也不會多復(fù)雜, 雙方明確參數(shù)所在區(qū)域和參數(shù)包含意義就可以傳遞了。比如我的系統(tǒng)里面,0xA0020800就是參數(shù)區(qū)域。 我在 eboot里面菜單里面增加一個(gè)bool參數(shù)bHiveClean的設(shè)置命令, 然后將這個(gè)參數(shù)告訴內(nèi)核。 Oal在OEMInit()里面也訪問這個(gè)區(qū) 域, 獲得參數(shù), 根據(jù)參數(shù)設(shè)置標(biāo)志位,通知filesys.exe執(zhí)行刪除動作.



            下面是實(shí)現(xiàn)。


            eboot增加了下面命令


            C) Clean SYS Hive register: TRUE
            c) Clean USER Hive register: TRUE


            用來設(shè)置bSysHiveClean和bUserHiveClean變量。



            oal部分:



            Ioctl.c


            --------


            //


            // Function: OALIoCtlBGetHiveCleanFlag


            //


            // This function is Get the Clean Hive Clean Flage


            //


            BOOL OALIoCtlBGetHiveCleanFlag(


            UINT32 code, VOID *lpInBuf , UINT32 nInBufSize, VOID *lpOutBuf, UINT32 nOutBufSize , UINT32 *pOutSize)


            {


            DWORD *pdwFlags;


            BOOL *pfClean;


            BSP_ARGS * pBspArgs = (BSP_ARGS *)IMAGE_SHARE_ARGS_UA_START;


            BOOL Flage = 0;


            if (!lpInBuf || (nInBufSize != sizeof(DWORD)) || !lpOutBuf || (nOutBufSize != sizeof(BOOL))) {


            NKSetLastError(ERROR_INVALID_PARAMETER);


            return FALSE;


            }



            pdwFlags = (DWORD *)lpInBuf;


            pfClean = (BOOL*)lpOutBuf;




            if (*pdwFlags == HIVECLEANFLAG_SYSTEM) {


            if(pBspArgs->bSysHiveClean)


            RETAILMSG(1, (TEXT("OEM: cleaning system hivern")));


            else


            RETAILMSG(1, (TEXT("OEM: Not cleaning system hivern")));



            *pfClean = (pBspArgs->bSysHiveClean==TRUE);


            }


            else if (*pdwFlags == HIVECLEANFLAG_USERS) {


            if(pBspArgs->bUserHiveClean)


            RETAILMSG(1, (TEXT("OEM: cleaning user hivern")));


            else


            RETAILMSG(1, (TEXT("OEM: Not cleaning user hivern")));


            *pfClean = (pBspArgs->bUserHiveClean==TRUE);


            }



            return TRUE;


            }



            這個(gè)宏IMAGE_SHARE_ARGS_UA_START就是指向0xa0020800.eboot也往同一個(gè)地址設(shè)置即可.



            Ioctl_tab.h


            ----------------


            增加新的ioctl:


            // 清除hive注冊表


            {IOCTL_HAL_GET_HIVE_CLEAN_FLAG, 0, OALIoCtlBGetHiveCleanFlag },


            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉