Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303839
  • 博文数量: 47
  • 博客积分: 2026
  • 博客等级: 大尉
  • 技术积分: 1620
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-25 09:34
文章分类

全部博文(47)

文章存档

2009年(8)

2008年(39)

我的朋友

分类: WINDOWS

2008-07-23 14:14:17

目标系统的硬件环境:
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;
}
阅读(2451) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~