//========================================================================
//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线后都是之前的模式.所以,如果我们需要设置生效,需要在设置完毕后重启机器.
说破了实在不之前,让我们来看看模式设置的代码:
一切就是那么简单,寥寥几句代码,即可完成两种模式的转换.如果比较无聊,接上USB线啥都不做,那只要给"DefaultClientDriver"一个区别于以上字符串的数值即可.
//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();
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"一个区别于以上字符串的数值即可.