(dbgmodel.h) 的 IModelObject 接口

数据模型的最基本但最强大的内容之一是,它标准化对象的定义以及对象如何与对象交互。 IModelObject 接口封装对象的概念 -- 该对象是整数、浮点值、字符串、调试器目标地址空间中的一些复杂类型,还是某些调试器概念(如进程或模块的概念)。

可以在 (或装箱到 IModelObject) 中保留几个不同的内容:

• 固有值 - IModelObject 可以是许多基本类型的容器:8、16、32 或 64 位有符号整数、布尔值、字符串、错误或空概念。

• 本机对象 - IModelObject 可以表示由调试器类型系统定义的复杂类型 (,该类型) 在调试器所针对的任何调试器的地址空间内

• 合成对象 - IModelObject 可以是动态对象 -- 如果你将:键/值/元数据元组的集合,以及一组概念,这些概念定义不简单地由键/值对表示的行为。

• 属性 - IModelObject 可以表示属性:可以使用方法调用检索或更改其值的内容。 IModelObject 中的属性实际上是一个 IModelPropertyAccessor 接口,该接口装箱到 IModelObject 中

• 方法 - IModelObject 可以表示方法:可以使用一组参数调用并获取返回值。 IModelObject 中的方法实际上是一个 IModelMethod 接口,该接口装箱到 IModelObject 中

IModelObject 不是隔离的对象。 除了表示上面所示的对象类型之一外,每个对象都有父数据模型链的概念。 此链的行为非常类似于|JavaScript 原型链。 每个数据模型对象定义父模型的线性链,而不是 JavaScript 等原型的线性链。 每个父模型反过来都有其自己的一组父级的另一个线性链。 从本质上讲,每个对象都是 (属性等功能聚合...) 此树中的每个对象本身和每个对象。 当查询特定属性时,如果查询的对象不支持该属性,则查询将按线性方式传递给每个父级。 这会创建一种行为,即通过对聚合树的深度优先搜索解析属性的搜索。

鉴于每个对象都是自身和父模型树的聚合,此对象模型中的扩展性非常简单。 扩展可以传入并添加到另一对象的父模型列表中。 执行此操作会扩展对象。 通过这种方式,可以向任何内容添加功能:对象或值的特定实例、本机类型、调试器对进程或线程的概念,甚至“所有可迭代对象”的概念。

继承

来自 IUnknown 的 IModelObject 插话。

方法

IModelObject 接口具有这些方法。

 
IModelObject::AddParentModel

AddParentModel 方法向给定对象添加新的父模型。
IModelObject::AddRef

AddRef 方法递增对象上接口的引用计数。 此方法属于 IModelObject 接口。
IModelObject::ClearConcepts

ClearConcepts 方法将从由此指定的对象的实例中删除所有概念。
IModelObject::ClearKeys

ClearKeys 方法从由此指定的对象的实例中删除所有键及其关联的值和元数据。
IModelObject::Compare

Compare 方法比较两个模型对象,并返回这些对象之间的关系的指示。
IModelObject::D ereference

Dereference 方法取消引用对象。
IModelObject::EnumerateKeyReferences

EnumerateKeyReferences 方法的行为类似于 EnumerateKeyValues 方法,只不过它返回对枚举的键的引用,而不是键的值。
IModelObject::EnumerateKeys

枚举动态密钥提供程序中的密钥。
IModelObject::EnumerateKeyValues

EnumerateKeyValues 方法是客户端将转向的第一种方法,用于枚举对象上的所有键。
IModelObject::EnumerateRawReferences

EnumerateRawReferences 方法枚举对所有本机子级 (字段、基类等的引用...给定对象的) 。
IModelObject::EnumerateRawValues

EnumerateRawValues 方法枚举所有本机子 (字段、基类等...给定对象的) 。
IModelObject::GetConcept

GetConcept 方法将在对象 (或其父模型链上搜索概念) ,并返回指向概念接口的接口指针。
IModelObject::GetContext

GetContext 方法返回与对象关联的主机上下文。
IModelObject::GetContextForDataModel

GetContextForDataModel 方法用于检索在对 SetContextForDataModel 之前调用时设置的上下文信息。
IModelObject::GetIntrinsicValue

GetIntrinsicValue 方法返回在 IModelObject 内装箱的东西。
IModelObject::GetIntrinsicValueAs

GetIntrinsicValueAs 方法的行为与 GetIntrinsicValue 方法的行为非常相同,只不过它将值转换为指定的变体类型。
IModelObject::GetKey

GetKey 方法将按名称获取与) 给定密钥关联的 (值和元数据。
IModelObject::GetKeyReference

如果对象或其父模型具有一个键,该键根据参数“key”命名,则这将返回对该键的引用。
IModelObject::GetKeyValue

GetKeyValue 方法是客户端将转向的第一种方法,以便按名称获取 (的值和与) 给定密钥关联的元数据。
IModelObject::GetKind

GetKind 方法返回在 IModelObject 内装箱的对象类型。
IModelObject::GetLocation

GetLocation 方法将返回本机对象的位置。 虽然此类位置通常是调试目标地址空间中的虚拟地址,但它不一定如此。
IModelObject::GetNumberOfParentModels

GetNumberOfParentModels 方法返回附加到给定对象实例的父模型数。
IModelObject::GetParentModel

GetParentModel 方法返回给定对象的父模型链中的 i-th 父模型。
IModelObject::GetRawReference

GetRawReference 方法在给定对象中查找本机构造,并返回对它的引用。
IModelObject::GetRawValue

GetRawValue 方法在给定对象中查找本机构造。 此类构造可以是字段、基类、基类中的字段、成员函数等。
IModelObject::GetTargetInfo

GetTargetInfo 方法实际上是 GetLocation 和 GetTypeInfo 方法的组合,该方法返回给定对象的抽象位置和本机类型。
IModelObject::GetTypeInfo

GetTypeInfo 方法将返回给定对象的本机类型。 如果对象没有与其关联的本机类型信息,则调用仍将成功,但将返回 null。
IModelObject::IsEqualTo

IsEqualTo 方法将主机上下文与其他主机上下文进行比较。 如果两个上下文等效,则返回此指示。 请注意,此比较不是接口等效。
IModelObject::QueryInterface

IModelObject::QueryInterface 方法检索指向对象上支持的接口的指针。
IModelObject::Release

IModelObject::Release 方法递减对象上接口的引用计数。
IModelObject::RemoveParentModel

RemoveParentModel 将从给定对象的父搜索链中删除指定的父模型。
IModelObject::SetConcept

SetConcept 方法将在此指针指定的对象实例上放置指定的概念。
IModelObject::SetContextForDataModel

SetContextForDataModel 方法由数据模型的实现用于在实例对象上放置实现数据。
IModelObject::SetKey

SetKey 方法是客户端将转向的方法,以便在对象 (上创建密钥,并可能将元数据与创建的密钥) 相关联。
IModelObject::SetKeyValue

SetKeyValue 方法是客户端将转向的第一种方法,以便设置键的值。 此方法不能用于在对象上创建新密钥。
IModelObject::TryCastToRuntimeType

TryCastToRuntimeType 方法将要求调试主机执行分析并确定给定对象的大多数派生) 类 (实际运行时类型。

要求

   
Header dbgmodel.h