//========================================================================
//TITLE:
// WinCE同步和硬碟模式的切換
//AUTHOR:
// norains
//DATE:
// Monday 22-October-2007
//Environment:
// EVC4.0 + Windows CE 5.0 Standard SDK
//========================================================================
本文一下內容基於RMI AU1200的實驗平台,且沒有更改預設的同步及硬碟模式的驅動檔案名稱,故無法保證本文的方法適用於所有的平台.
在進行我們的文章之前,還有一件事情需要確認,就是make nk.bin時已經將兩種模式的特性添加.
如果平台符合之前所說的兩個條件,那麼離成功已經只有一步之遙,剩下的也就非常簡單的(當然之前也沒見得多複雜^_^).
接上USB線,wince是決定採用同步還是硬碟模式,取決於註冊表的參數.如果在DefaultClientDriver的索引值是Serial_Class,則是同步模式;反之,如果為Mass_Storage_Class,則為硬碟模式.需要留意一點的是,device.exe在啟動後會自動載入usb的驅動.換句話說,如果系統成功啟動後然後再更改註冊表,那麼無論改為何種模式,連結USB線後都是之前的模式.所以,如果我們需要設定生效,需要在設定完畢後重啟機器.
說破了實在不之前,讓我們來看看模式設定的代碼: CReg reg;
reg.Create(HKEY_LOCAL_MACHINE,TEXT("Drivers/USB/FunctionDrivers"));
TCHAR szDisp[MAX_PATH] = {0};
reg.GetValueSZ(TEXT("DefaultClientDriver"),szDisp,MAX_PATH);
MessageBox(NULL,szDisp,TEXT("The current value"),MB_OK);
//同步模式
//reg.SetSZ(TEXT("DefaultClientDriver"),TEXT("Serial_Class"));
//硬碟模式
//reg.SetSZ(TEXT("DefaultClientDriver"),TEXT("Mass_Storage_Class"));
reg.Reset();
一切就是那麼簡單,寥寥幾句代碼,即可完成兩種模式的轉換.如果比較無聊,接上USB線啥都不做,那隻要給"DefaultClientDriver"一個區別於以上字串的數值即可.