搜索
首页 电脑/网络 软件

xp体系结构

全部回答

2018-04-01

0 0
    CMI:技术的核心 正如您从我的上一篇文章(以及所有出版物)中所了解到的,Windows XP Embedded 使用基于 SQL 的数据库来存储所有组件。数据库可以是本地或远程的 Microsoft® SQL Server,也可以是本地的 Microsoft® 数据引擎 (MSDE)(可在 Windows XP Embedded CD 上找到)。
    而 Windows NT Embedded 4。0 则使用一个单一的本地 Jet 数据库 。mdb 文件来存储所有的组件和配置。 为了能够从一组工具中无缝访问本地和远程数据库,同时提供快捷的数据库切换,整个体系结构中设置了一个数据库通信层。
  该层称为 CMI,或组件管理接口。  它的主要目的是在 Windows XP Embedded 工具(Target Designer、Component Designer 和 Component Database Manager)和组件数据库之间提供一个标准接口,而不管数据库驻留在哪里(本地或远程、SQL Server 或 MSDE)。
    只要与组件数据库中的内容有关,CMI 就会被调用。 因为所有工具都依赖于活动的数据库连接来进行工作,所以任何工具所做的第一件事都是请求 CMI 提供一个活动数据库连接。
  如果没有可用的数据库连接,CMI 将返回一个失败,而工具将报告一个错误。总之,没有数据库连接,Windows XP Embedded 将不能进行任何工作。   CMI 也支持某种级别的异步数据库访问,这种情况通常发生在远程 SQL Server 数据库和多个客户端之间。
  所有涉及数据库更改的操作都在 SQL 中处理,并在操作失败时提供复原功能。CMI 还可以区分只读模式和独占模式。任何工具要从数据库中删除信息(当前仅限于组件数据库管理器),都必须具有独占访问权限,如果任何其他工具打开了数据库,该工具将不能获得这一权限。
    另一方面,如果某工具已经被授予独占访问权限,其他工具将不能访问数据库,直到该工具释放这一权限。 此对象非彼对象 注意:下面的讨论中将使用两个术语 - 组件和实例,二者很容易混淆。
  简单地说,组件只是一组驻留在数据库中的资源和属性。组件添加到配置中便称为实例,可以修改、处理和构建。  可以把组件视为 cookie 模式,而实例是从该模式中创建的实际 cookie。
  更改 cookie 剪裁模式并不容易,但在剪裁 cookie 后,可以随意对 cookie 进行处理。了解组件和实例之间的这种差异很重要,在本文和以后的文章中都将涉及这一问题。 因为 CMI 是工具的 COM 服务器,这使得 Windows XP Embedded 体系结构形成这样一个基本特性 - 把任何事物都视为对象。
    配置、组件、实例、资源、文件、注册项、存储库都是 CMI 覆盖下的对象。因此,Windows XP Embedded 体系结构体现了面向对象 (OO) 思想的三个原则:封装、继承和多态。
  这里我们不对 OO 设计做详细讨论,只解释其中与 Windows XP Embedded 体系结构有关的几个方面。  讨论的重点将集中在组件上,但相关的概念可以扩展到所有 Windows XP Embedded 对象。
   每个 Windows XP Embedded 对象都是一个独立的单元。组件带有自己的属性和内部代码,以此来封装自己,并与其他对象区分开来。 组件也能够继承其他组件的属性。  例如,假定一组设备都基于同一芯片组:假设为声卡驱动器,使用虚构的 SoundExplosion 1A 芯片组。
  有三个声卡使用该芯片组,但提供不同的功能:一个用于游戏端口,一个用于 MIDI 端口,另一个用于 SCSI 接口。我们不用创建三个大同小异的组件来适应不同的要求,而只需创建一个组件,将基本功能封装进去。
    然后针对三种差异创建三个组件,并将基本功能组件列为“原型”。这三个组件将继承与原型相关联的属性和资源,但同时也添加了自己的资源。 Windows XP Embedded 对象中的多态通常由 DHTML 配置脚本和构建脚本来处理。
  DHTML 配置脚本允许组件的最终用户在组件实例中动态设置属性,然后在构建脚本中检查这些属性并对其做出反应。  这样,您就可以在构建配置时更改组件的行为,以满足开发人员的需求。
   这最后一部分会进一步体现 CMI 面向对象的特性:Windows XP Embedded 中的每个对象都具有一组属性和方法,某些对象甚至能够对事件做出反应。属性可以分为标准属性(如组件名称、组件作者和版权)和高级属性(cmiNoHelpFiles 是组件的一个常用高级属性)。
    对象的方法可以简单地继承自基本组件(如基本构建行为),也可以是该组件所特有的(如用户接口核心组件,它包含 DHTML 配置脚本以及构建脚本,可以实现不同的 UI 功能)。
  可以在构建过程中引发事件,并可由组件脚本做出反应。 某些高级属性已经被预定义,组件最常见的高级属性有 cmiNoHelpFiles(构建脚本用它从构建中删除帮助文件)、cmiLangEnableMUI(构建脚本用它来启用组件的多语言用户接口 [MUI] 支持)以及 cmiProtPropList(Target Designer 用它来保护预定义的属性)。
    要检查组件的高级属性,可以在 Target Designer 中将组件添加到某个配置,然后在 Configuration Editor 中单击该组件,再单击 Advanced。
   扩展对象模型 Windows XP Embedded 的对象特性和 CMI 应用不仅限于组件和实例,CMI 也把配置当作对象处理。  配置的标准属性包括配置名称、所有者、作者和版权。
  高级配置属性包括有关目标启动驱动器、启动 ARC 路径和帮助文件的设置。要检查这些属性,可以在 Target Designer 的 Configuration Editor 中选择配置名称,然后在 Details 窗格中单击 Advanced。
     与组件和实例的对象身份一样,它们的组成部分也都被视为对象。组件中的每个文件、注册表或其他资源都是对象,分别具有一组属性。要检查这些属性,可以在 Configuration Editor 中展开实例,然后选择 Files、Registry Data 或 Resources。
    在 Details 窗格中右击所要检查的资源,这时便会显示该资源的标准属性,同时显示 Advanced 按钮,单击该按钮可以显示资源的高级属性。这同样适用于与该配置相关联的 Extra Files、Extra Registry Data 和 Extra Resources。
    要完成所有内容,每一个组、包、存储库和存储库集也都被作为对象处理,它们都有自己的标准属性和高级属性。 CMI 的运作 假设我们有一个应用程序要包含到一个运行时映像中。
  一般的过程是先为应用程序创建一个组件,将组件导入数据库,将组件包含在某个配置中,然后构建运行时映像。  现在我们看一下 CMI 在其中的作用。(由于要在接下来的两篇文章中详细探讨组件的创建,因此这里只做一个简单的介绍。
  ) 当启动 Component Designer 时,CMI 首先确保具有一个数据库连接。如果创建新组件,CMI 将创建一个新的组件对象,然后 Component Designer 使用该对象作为所定义的所有组件信息的存储位置。
    基本的创建过程包括定义组件的名称、指定要复制的文件和将其放在运行时映像中的位置,以及指定使用哪个注册表主键并将其放在何处。名称是组件的标准属性,因此它包含在组件对象中。
  所指定的文件和注册项是 CMI 创建的对象,它们将附加到组件对象中。 导入组件时,先启动组件数据库管理器。  数据库管理器首先调用 CMI 来连接安装时指定的数据库,如果 CMI 连接成功,则可以将 SLD 导入到该数据库。
  (SLD 表示资源级别定义,并称为“滑动”。由 Component Designer 输出。)组件数据库管理器再将 SLD 传递到 CMI,以便进行处理。  浏览数据库、删除包和组件以及检查对象的属性都由 CMI 处理,CDM 的作用相当于基本 COM 对象层的 UI。
   当最终准备构建运行时映像时,CMI 将再次验证数据库连接。(是否看到了一个模式?)创建新的配置需要由 CMI 来创建相应的对象,完成整个组件浏览器的内容也是如此。  要将组件添加到配置,CMI 首先要基于选定的组件创建一个实例,然后将其附加到打开的配置中。
  同时也要为该实例的文件、注册表和其他资源创建资源对象。在相关性检查过程中,CMI 将负责标识相关性,并创建相关性解析所需的组件列表。在构建过程中,将调用 CMI 来访问要复制的实际文件,同时提供详细的属性信息来处理相应的构建。
     。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
多媒体软件
系统软件
办公软件
网络软件
图像处理软件
举报
举报原因(必选):
取消确定举报