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.
}
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |