ÄúµÄλÖãºÍøÕ¾Ê×Ò³ > µçÆ÷άÐÞ×ÊÁÏÍø > ÕýÎÄ >
WinCE5ʹÓü¼ÇÉ
À´Ô´£º ÈÕÆÚ£º2013-11-29 9:17:51 ÈËÆø£º±êÇ©£º
pbxmlutils /getbuildenv /worksPACe "%_WINCEROOT%PBWorkspaces.pbxml" /cONfig ": " > Setenv.bat
¿´×Å¿ÉÄÜÓеãÔΣ¬ÎÒÀ´¾Ù¸öÀý×Ó£º
pbxmlutils /getbuildenv /workspace "%_WINCEROOT%PBWorkspacesMyWorkspaceMyWorkspace.pbxml" /config "CEPC: x86_Release" > SetEnv.bat
Æäʵ¾ÍÁ½¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýºÜ¶àÈ˶¼ÖªµÀÈçºÎÉèÖ㬵ڶþ¸ö²ÎÊýconfig¿ÉÄÜÓÐЩÈ˲»Ì«Á˽⣬Äã¿ÉÒÔ´ò¿ªÄãµÄ¹¤³Ì£¬È»ºó²é»·¾³±äÁ¿PBCONFIGµÄÖµ£¬ÓÃÕâ¸öÖµ¾Í¿ÉÒÔÁË¡£
2. Blddemo.exe
Õâ¸öÓ¦¸Ã±È½ÏÊìϤ¡£±àÒëWinCEµÄʱºò£¬Êµ¼ÊÉϾÍÊǵ÷ÓÃBlddemo -q£¬²»¶à˵ÁË¡£
3. buildsdk.exe
Õâ¸öÊÇÓÃÀ´±àÒëSDKµÄ¡£¸ñʽÈçÏÂ;
buildsdk [MyOSDesign.pbxml]
ºÜ¼òµ¥£¬²»¹ý»¹ÊǸø¸öÀý×Ó£º
buildsdk "%_WINCEROOT%PBWorkspacesMyWorkspaceMyWorkspace.pbxml"
ÔÚijЩӦÓó¡ºÏÐèÒª½«×¢²á±í»¹Ô³ÉΪ³ö³§µÄĬÈÏÉèÖá£ÒÔǰµ±WinceʹÓÃÁËHIVE×¢²á±íºó£¬Ã¿´ÎÓû§µÄ×¢²á±í¸Ä¶¯½«µÃµ½±£´æ£¬¶ø²»»á»Ö¸´Ä¬ÈÏ×¢²á±í¡£Í¨³£ÒªÇóÄܹ»ÔÚAPÖÐͨ¹ýµã»÷Ò»¸ö°´Å¥À´ÊµÏÖÕâÖÖclean boot¡£µ±WinceʹÓÃÁËHIVE×¢²á±íºó£¬Ã¿´ÎÓû§µÄ×¢²á±í¸Ä¶¯½«µÃµ½±£´æ£¬µ«ÊÇÔÚijЩӦÓó¡ºÏÐèÒª½«×¢²á±í»¹Ô³ÉΪ³ö³§µÄĬÈÏÉèÖã¬Í¨³£ÒªÇóÄܹ»ÔÚAPÖÐͨ¹ýµã»÷Ò»¸ö°´Å¥À´ÊµÏÖÕâÖÖclean boot¡£
·½·¨Ò»£º
ʹÓÃHIVE×¢²á±í£¬ÏµÍ³ÔÚÍê³ÉÁ˵ÚÒ»½×¶ÎÒ²¾ÍÊǼÓÔØÍêÁËboot.hv+binfsÖ®ºóºÍ¼ÓÔØÏµÍ³HIVE×¢²á±í֮ǰ£¬filesys.exe¶¼»áµ÷ÓÃOEMIoControlÀ´²éѯÊÇ·ñÐèÒªÇå³ý±£´æÔÚbLOCkÉ豸ÉϵÄhvÎļþ£¬ÆäCODE´úÂëΪIOCTL_HAL_GET_HIVE_CLEAN_FLAG£¬ËüµÄÊäÈë²ÎÊýlPINBuf¹Ì¶¨ÎªHIVECLEANFLAG_system»òHIVECLEANFLAG_USERS£¬filesys.exe»á·Ö±ðÓÃÕâÁ½ÖÖ²ÎÊýµ÷ÓÃÁ½´ÎIOCTL_HAL_GET_HIVE_CLEAN_FLAG,µÚÒ»´ÎÓÃHIVECLEANFLAG_SYSTEMÀ´ÎÊOEMÊÇ·ñÐèÒªÇå³ýsystem.hv£¬µÚ¶þ´ÎÓÃHIVECLEANFLAG_USERS×ö²ÎÊýÀ´²éѯÊÇ·ñÒªÇå³ýuser.hv£¬Èç¹û·µ»ØµÄlpOutBufÖеÄֵΪTRUEÔò×öÇå³ý²Ù×÷£¬Èç¹ûΪFalseÔò±£ÁôblockÉ豸ÉϵÄ×¢²á±íÎļþ¡£
ĬÈÏWINCE²¢Ã»ÓÐʵÏÖÕâ¸öIOCTL£¬ËùÒÔOEMҪɾ³ý×¢²á±íÎļþ¾Í±ØÐëÏȱàдÕâ¸öIOCTL´úÂë¡£´úÂëµÄÀý×ӿɲο¼±êÌâΪ“IOCTL_HAL_GET_HIVE_CLEAN_FLAG”µÄ°ïÖúÎĵµ¡£ÁíÍâ ±ØÐëÔÚioctl.hºÍioctl.cÁ½¸öÎļþÖбàд¸Ã´úÂë¡£
Òª½øÒ»²½Á˽âÕâ¸öÈ«¾ÖÊý×飬²Î¼û±êÌâΪ“IOCTL Library”µÄ°ïÖúÎĵµ¡£
¿ÉÒÔʹÓù²ÏíÄÚ´æ¿Õ¼äÀ´ÊµÏÖ£¬ÎÒÃÇ¿ÉÒÔÔÚÎïÀíÄÚ´æÖб£Áô³öÒ»¿é²»»á±»ÆäËûÄ£¿éÕ¼ÓõĿռ䣬ÔÚÕâ¸ö¿Õ¼ä·ÅÖÃÁ½¸öBOOL±äÁ¿·Ö±ðÀ´±£´æsystemºÍuserµÄhvÇå³ýµÄ±êÖ¾·û£¬È±Ê¡ËüÃǶ¼ÎªFalse£¬OALIoCtlBGetHiveCleanFlag()¶Áµ½FlaseÔòÈÏΪ²»Çå×¢²á±í£¬APÔÚÐèÒªµÄʱºò½«ÕâÁ½¸ö±êÖ¾·ûÖÃΪTrue£¬½ÓÏÂÀ´¾ÍÊÇÒªÖØÐÂÆô¶¯µ½OALIoCtlBGetHiveCleanFlag()º¯Êý±»µ÷Óõĵط½£¬ÓÉÓÚ±êÖ¾·ûºÅÊDZ£´æÔÚRAMÖеģ¬¶Ïµç»á¶ªÊ§£¬»¹ºÃÓиö·½·¨¿ÉÒÔÈÃϵͳ¸´Î»¶øÓÖÄܱ£´æRAMÖеÄÄÚÈÝ£¬ÄǾÍÊÇReset£¬ËùÒÔÈÃAPÔÚÉèÖÃÍê±êÖ¾·ûºóÂíÉϵ÷ÓÃResetÖ¸Áî¾Í¿ÉÒÔÍêÃÀʵÏÖClean bootÁË¡£
1 ÔÚioctl.cÎļþÖÐÕÒµ½ const OAL_IOCTL_HANDLER g_oalIoCtlTable[]£¬Ìí¼ÓIOCTLºÍ¶ÔÓ¦µÄ´¦Àíº¯ÊýOALIoCtlBGetHiveCleanFlag
{ IOCTL_HAL_GET_HIVE_CLEAN_FLAG, 0, OALIoCtlBGetHiveCleanFlag },
2 ÔÚioctl.cÎļþÖÐʵÏָú¯Êý
//added by aulyp for »Ö¸´³ö³§ÉèÖÃ
BOOL OALIoCtlBGetHiveCleanFlag( // Ò»°ãÔÚIOCTL.CÖÐʵÏÖ
UINT32 code, VOID *lpInBuf , UINT32 nInBufSize, VOID *lpOutBuf,
UINT32 nOutBufSize , UINT32 *pOutSize)
{
BSP_ARGS *pArgs = (BSP_ARGS*)IMAGE_SHARE_ARGS_UA_START; //±£ÁôµÄ¹²ÏíRAM¿Õ¼äµÄÐéÄâµØÖ·
if (!lpInBuf || (nInBufSize != sizeof(DWORD)) || !lpOutBuf || (nOutBufSize != sizeof(BOOL)))
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
else
{
DWORD *pdwFlags = (DWORD*)lpInBuf;
BOOL *pfClean = (BOOL*)lpOutBuf;
if (*pdwFlags == HIVECLEANFLAG_SYSTEM)
{
if(pArgs->bClearSystemHive) //ÅжÏÊÇ·ñÇå³ýsystem.hv
{
RETAILMSG(1, (TEXT("OEM: cleaning system hivern")));
}
else
{
RETAILMSG(1, (TEXT("OEM: Not cleaning system hivern")));
}
*pfClean = pArgs->bClearSystemHive;
pArgs->bClearSystemHive=FALSE; //Ò»¶¨ÔÚÖ´ÐÐÍêºóÉèÖÃΪĬÈϵÄfalse·ñÔò³£¹æreset¶¼»áÇå¿Õ×¢²á±í
}
else if (*pdwFlags == HIVECLEANFLAG_USERS)
{
if(pArgs->bClearUserHive) //ÅжÏÊÇ·ñÇå³ýuser.hv
{
RETAILMSG(1, (TEXT("OEM: cleaning user hivern")));
}
else
{
RETAILMSG(1, (TEXT("OEM: Not cleaning user hivern")));
}
*pfClean = pArgs->bClearUserHive
pArgs->bClearUserHive=FALSE; //restore to default
}
}
return TRUE;
}
3 Args.hÎļþÖУ¬ÕÒµ½BSP_ARGS½á¹¹Ì嶨Òå
¼ÓÈëÈçÏ£º
BOOL bClearSystemHive=FALSE; //TRUE ? clear system.hv
BOOL bClearUserHive=FALSE; //TRUE ? clear user.hv
4 ÔÚOal_ioctl.hÖмÓÈ뺯ÊýÉùÃ÷
BOOL OALIoCtlBGetHiveCleanFlag(UINT32 code, VOID *lpInBuf , UINT32 nInBufSize,
- 1
- 2
- ÏÂÒ»Ò³
¡¾¿´¿´ÕâÆªÎÄÕÂÔڰٶȵÄÊÕ¼Çé¿ö¡¿
Ïà¹ØÎÄÕÂ
- ÉÏһƪ£º µçÆø°²È«ÖªÊ¶»ã±à
- ÏÂһƪ£º Êý×ÖµçÊӵĴ«Êä;¾¶