【WCE】实现永久性注册表数据保存 (VIACEPC BSP)

目标系统的硬件环境:
VIA CLE266 NorthBridge + VT8235 SouthBridge,Transcend TS32MDOM40V DOM
目标系统的软件环境:
Windows CE 5.0,VIA CLE266/CN400/CN700 CEPC BSP

Hive-based:

  • 将 Catalog/Device Drivers/Storage Devices/Storage Devices/ATAPI PCI/IDE Storage Block Driver/ATAPI PCI/IDE Storage Block Driver 加入 Workspace;
  • 将 Catalog/Core OS/Windows CE devices/File Systems and Data Store/Storage Manager/FAT File System 加入 Workspace;
  • 将 Catalog/Core OS/Windows CE devices/File Systems and Data Store/Registry Storage/Hive-based Registry 加入 Workspace;
  • 菜单 Platform->Settings,在“Platform Settings”对话框中选择“Environment”标签,通过设置环境变量:
    SET PRJ_ENABLE_FSREGHIVE = 1
    保证如下注册表键值即可:
    [HKEY_LOCAL_MACHINE/init/BootVars]
       "Flags"=dword:3
    [HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/HDProfile]
        "MountAsBootable"=dword:1
  • 然后,执行 Sysgen 即可。

RAM-based:

  • 将 Catalog/Device Drivers/Storage Devices/Storage Devices/ATAPI PCI/IDE Storage Block Driver/ATAPI PCI/IDE Storage Block Driver 加入 Workspace;
  • 将 Catalog/Core OS/Windows CE devices/File Systems and Data Store/Storage Manager/FAT File System 加入 Workspace;
  • 将 Catalog/Core OS/Windows CE devices/File Systems and Data Store/Registry Storage/RAM-based Registry 加入 Workspace;
  • 将 Catalog/Third Party/BSPs/VIA CLE266/CN400/CN700 CEPC: x86/HDD Registry Save 加入 Workspace;
  • 然后,执行 Sysgen 即可。

Power-down flush:

Windows CE .Net 4.2 版的 VIACEPC BSP 提供了 SCIPWM 驱动程序用于处理 power-down flush。

  • 对于 hive-based 注册表:
    菜单 Platform->Settings,在“Platform Settings”对话框中选择“Environment”标签,通过设置环境变量:
    SET PRJ_ENABLE_REGFLUSH_THREAD = 1 
    即可实现 lazy-flush。
    故 SCIPWM 只用来处理例如按下电源按钮关机之类的 power-down 中断。
  • 对于 RAM-based 注册表:
    由于 VIA 的 HddRegSave 驱动程序使用的是 save-and-restore 方式,故 SCIPWM 是必须的。
    此外,还要修改 $(_WINCEROOT)/PUBLIC/SHELL/OAK/HPC/EXPLORER/TASKBAR/stmenu.cpp 中的 StartMenu_ProcessCommand 函数,使其在执行“挂起”时保存注册表数据。
case  IDM_START_SUSPEND:
{
    DWORD dwType;
    DWORD dwLen;
    DWORD dwValue;
    DWORD lRet;

    dwValue 
= TRUE;    // Set default
    dwLen = sizeof(dwValue);
    lRet 
= RegQueryValueEx(HKEY_LOCAL_MACHINE, L"Suspend",
    (LPDWORD) L
"Explorer"&dwType,
    (LPBYTE) 
&dwValue, &dwLen);
    
if (dwValue)
    
{
        RegCopyFile(L"
//temp//wcereg");
        CopyFile(L"
//temp//wcereg", L"//IDE Flash//wcereg", FALSE);
        GwesPowerOffSystem();
    }

    
break;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值