reanchear
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望253点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
阅读:1835回复:10

开贴记载自己的Wince学习日志

楼主#
更多 发布于:2008-08-14 17:42
通过最近的几天学习,对Wince系统有了一点点的了解。并且今天感觉特别有收获,所以决定在此立贴记录自己的学习过程。

如果写得对的,希望大家支持,不对的希望大家指正。

//2008. 08 14
说起Wince系统,自然要提到的是wince的注册表,注册表在wince系统中极为重要。可以称他是整个系统特性的管理员。
wince 系统里面所有驱动模块都在注册表中有记录。wince 系统在装在模块前先访问platform.reg。然后根据platform.reg里面每一个组件的属性来加载。
比方说:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
        "Irq"=dword:16 ; 22 IRQ_FFUART
        "SysIntr"=dword:1d ; 29 SYSINTR_FFUART
        "MemBase"=dword:40100000 ; FFUART Register
        "MemLen"=dword:40
        "DeviceArrayIndex"=dword:80 ; FFUART object
        "Prefix"="COM"
        "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
        "Dll"="$(_TGTPLAT_PFX)_serial.dll"
        "Order"=dword:4            ; make sure it is loaded afer IPM
        "Flags"=dword:0
        "Index"=dword:1
        ; 32BitBus: 1 = 32BitBus is enabled, 0 = 32BitBus is disabled
        "32BitBus"=dword:1
        "RxBufferSize"=dword:2048

这一段中,
       Irq记录的是中断号。16是16进制的,等于22.
       Prefix 是设备的名字
      IClass 是设备的GUID
      Dll是设备驱动的动态库
      order 是模块的加载顺序
      Flag是表示系统启动加载还是在调用时候加载
      Index是表明设备编号如COM1,COM2等
其他的还有些不是很清楚,烦请大家给些解释。

今天先就写这么多,时间有限,明天有空再继续。
大家要是看到也烦请补充,有了你的补充,我的wince学习过程将更加精彩


        
cohere
驱动牛犊
驱动牛犊
  • 注册日期2008-04-18
  • 最后登录2008-12-05
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-15 09:36
顶顶顶
新人报到,请多指教
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
板凳#
发布于:2008-08-15 09:47
用户被禁言,该主题自动屏蔽!
reanchear
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望253点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-08-15 10:20
非常感谢tracera的指教。映像编译生成阶段的确是如你所说,把所有的.reg文件合并成reginit.ini文件。谢谢。
至于系统加载顺序还望大家指点。
今天周末,我将在下班后好好整理一下最近的学习心得
reanchear
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望253点
  • 贡献值0点
  • 好评度102点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-08-15 11:54
非常感谢tracera对注册表提出的疑问。下面是比较详细的讲解,非常有助于理解注册表充当的角色。再次期望更多的wince高手留言指教,这样我会很有动力把这个贴写好,也作为将来同样要学习使用Wince同行的参考,借鉴。

不是所有文件系统驱动程序都使用了物理设备,即使使用,也可能没有使用分区驱动程序。这就提供了巨大的灵活性。
操作系统启动时,NKexe 将直接从 ROM 文件系统加载 FileSysexe。然后,FileSysexe 从 ROM 文件系统内的默认注册表对注册表进行初始化。
之后,FileSysexe 将读取注册表项,以便启动各种应用程序。设备管理器从 HKEY_LOCAL_MACHINE\Driver\BuiltIn 项加载驱动程序。
内置到 FileSysexe 中的存储管理器向设备管理器通知系统注册,以便接收有关块驱动程序加载和卸载的通知。
然后,存储管理器打开块驱动程序,并向它查询配置文件名称。每个块设备类型都有一个与它相关的配置文件。存储管理器读取有关设备的分区驱动程序的信息,并加载适当的驱动程序。
因为文件系统将不需要知道数据是否来自磁盘上的分区、或者直接来自磁盘,所以,FSDMGR 对文件系统驱动程序进行包装,以便为驱动程序的高端或低端提供接口。

存储管理器调用文件系统驱动程序 (FSD),而 FSD 使用 FSDMGR_ API 从设备检索数据。如果是 CD(没有分区),则设备通过 FSDMGR 与块驱动程序通信。如果它是有多个分区的硬盘,那么它以同样方式使用 FSDMGR_ API。但这之后 FSDMGR 会将工作转交给适当的分区驱动程序。
我们已经讨论了存储管理器、FSDMGR、FSD、分区驱动程序和块驱动程序如何交互和互操作。让我们回过来详细讨论它们是如何加载的,并考查注册表中的配置文件的细节。前面已经提到过,配置文件只是一组注册表值,用于定义有关块设备和应当如何在系统中使用它的信息。配置文件位于以下项的下面:HKEY_LOCAL_MACHINE\System\StorageManager\Profiles
每个配置文件都是位于基本配置文件项的下面,以此配置文件名称标识的项。例如,如果 Windows CE NET 设备上有一个硬盘,并且它确实使用硬盘配置文件,则配置文件位于
HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\Hard Disk 下面。所有配置文件信息都包含在该配置文件项下面的命名值中。下表列出了各种值及其目的。


值 类型 说明
Folder REG_SZ 在 Windows 资源管理器中显示给用户的文件夹名称。对于多个实例,将自动追加整数。(例如,Storage Card、Storage Card2 等等。)
FileSystem REG_SZ 用作磁盘的默认文件系统的名称。(如果使用了分区驱动程序,则通常不使用它。)
PartitionDriver REG_SZ 列出如果默认驱动程序不合适时要使用的分区驱动程序。如果该字符串为空,则不加载任何分区驱动程序。如果该值不出现,则使用默认分区驱动程序。
AutoFormat REG_DWORD 如果磁盘没有格式化,则自动执行格式化
AutoPart REG_DWORD 如果磁盘没有分区,则自动将它分区,并且其中一个分区占据最大数量的可用磁盘空间。
AutoMount REG_DWORD 当存储设备驱动程序加载时,自动装入文件系统。
Name REG_SZ 显示在控制面板 UI 中的配置文件名称。
MountFlags REG_DWORD 用于确定如何装入文件系统的标志。


将文件系统标记为隐藏可以防止它被任何标准的文件和文件夹枚举发现。
存储管理器独立完成该操作,以便设备驱动程序和应用程序可以检测到是否特定系统正在使用存储管理器。
MountFlags 的下一位指示文件系统是否可包含基于配置单元的注册表。
作为根标志的装入文件系统允许通过将外部存储作为根进行连接来避免这个问题,因为这样一来,文件 \MyDataFileTXT 将驻留在外部存储设备的根中。隐藏 ROM 文件系统将隐藏 ROM 文件系统数据文件(但不执行适当的 EXE 和 DLL),允许更新 ROM 中的所有文件。

Windows CE 文件系统体系结构是灵活的和可扩展的,并且支持:
•  多个块设备。
•  每个块设备支持多个分区。
•  每个分区支持不同文件系统。
•  将外部设备文件系统作为根系统装入。
注册表是让加载和运行文件系统的过程具有正确的(或期望的)行为的关键。
xianxiangwy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-06
  • 最后登录2016-01-09
  • 粉丝3
  • 关注0
  • 积分6分
  • 威望15点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-08-21 20:49
顶,winCE就是要很多人去搞。要是大家做完些东西都总结下来,并在同一个地方共享,那总结聚得多了,大家开发也就越来越轻松了。
zhuxiaofeng
驱动小牛
驱动小牛
  • 注册日期2007-04-06
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分1013分
  • 威望243点
  • 贡献值0点
  • 好评度202点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-08-21 22:38
呵呵,不错,再多实践就不错了。顶一下。
做一个出色的程序员!
feitian0896
驱动牛犊
驱动牛犊
  • 注册日期2007-12-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-08-22 15:12
不错 我顶楼主了
cohere
驱动牛犊
驱动牛犊
  • 注册日期2008-04-18
  • 最后登录2008-12-05
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-08-26 17:34
有来顶lz了
新人报到,请多指教
asmallsail
驱动牛犊
驱动牛犊
  • 注册日期2008-08-27
  • 最后登录2008-11-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-08-27 15:37
楼主的做法是在不错。让大家都来看看。交流交流
wscnczp
驱动牛犊
驱动牛犊
  • 注册日期2008-04-23
  • 最后登录2008-10-15
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-08-27 16:00
看pb 的帮助和msdn
游客

返回顶部