IModelObject::SetContextForDataModel 方法 (dbgmodel.h)
数据模型的实现使用 SetContextForDataModel 方法将实现数据放置在实例对象上。 从概念上讲,每个 IModelObject (为简单起见调用此实例,) 包含状态的哈希表。 哈希表由另一个 IModelObject 编制索引, (为简单起见调用此数据模型,) 该模型位于实例的父模型层次结构中。 此哈希中包含的值是由 IUnknown 实例表示的一组引用计数状态信息。 一旦数据模型在实例上设置此状态,它就可以存储任意实现数据,这些数据可以在属性 getter 等过程中检索这些数据。
通常,扩展 (或其他数据模型组件) 希望将某种合成构造表示为一种类型。 调试器公开进程对象就是其中一个示例。 通常,实现会将类型定义的概念映射到数据模型。 数据模型将包含对象 (公开的内容的属性 getter,例如:进程名称、进程 ID、线程计数、线程等...) 。创建此数据模型的实例时,将创建一个空白合成对象,并且数据模型 (,或者我们可以将类型定义) 附加为父模型的内容。 在某些情况下,可以直接将足够的信息用于唯一标识对象并实现所有数据模型的属性 getter。 在我们的进程示例中,进程 ID 可能作为名为 ID 的密钥存储在实例上。 例如,当调用数据模型上的 getter(例如作为进程名称)时,实现只需调用 GetKeyValue 方法来提取进程 ID。然后,返回名称所需的实现可以从 PID 执行此操作。 在其他情况下,实现类型所需的状态更为复杂,包含其他本机构造,或者由于其他原因无法设置为实例键。 在这种情况下,数据模型将构造 IUnknown 派生类,将实现数据置于此类中,并在实例上调用 SetContextForDataModel 方法,以便将其实现数据与实例对象相关联。 实例析构时,将释放状态类的引用计数,并根据需要释放它
语法
HRESULT SetContextForDataModel(
IModelObject *dataModelObject,
IUnknown *context
);
参数
dataModelObject
IModelObject,表示正在实例对象上存储状态的数据模型。 这实际上是关联状态对象的哈希键。
context
与实例关联的状态。 此 (和任何其他接口的确切含义,等等...它支持) 由数据模型调用来设置此状态。 唯一的要求是此类状态是 COM 引用计数。
返回值
此方法返回指示成功或失败的 HRESULT。
注解
代码示例
ComPtr<IModelObject> spObject; /* get an object */
ComPtr<IModelObject> spDataModelObject; /* get an attached data model (from earlier
AddParentModel or from GetParentModel) anywhere in
the ancestor tree */
// Context data must be IUnknown derived. Otherwise, implementation is opaque to the data model.
class MyContextData :
public Microsoft::WRL::RuntimeClass<
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
IUnknown
>
{
/* put whatever you want here */
};
ComPtr<MyContextData> spContextData = Microsoft::WRL::Make<MyContextData>();
if (SUCCEEDED(spObject->SetContextForDataModel(spDataModelObject.Get(), spContextData.Get())))
{
// There is now context data associated with spObject (an instance) for
// spDataModelObject (a parent model). This can be fetched via
// GetContextForDataModel. Note that spObject and spDataModelObject only need t
// to be related. The model does not need to be an immediate parent.
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |