IDataModelManager3::CreateTypedObjectReference 方法 (dbgmodel.h)
CreateTypedObjectReference 方法在语义上类似于 CreateTypedObject 方法,只不过它创建对基础本机/语言构造的引用。 创建的引用是具有一种 ObjectTargetObjectReference 的对象。 它不是本机引用,因为基础语言可能支持(例如:C++& 或 &&)。 完全可以将 ObjectTargetObjectReference 用于C++引用。
ObjectTargetObjectReference 类型的对象可以通过在 IModelObject上使用 Dereference 方法转换为基础值。 还可以将引用传递给基础主机的表达式计算器,以便以适当的语言重新分配给值。
语法
HRESULT CreateTypedObjectReference(
IDebugHostContext *context,
Location objectLocation,
IDebugHostType *objectType,
_COM_Errorptr_ IModelObject **object
);
参数
context
此对象所在的调试主机上下文。 如果未提供显式上下文,则新创建的对象的上下文将从 objectType 参数的上下文继承。 调用方可以传递特殊标记值USE_CURRENT_HOST_CONTEXT以指示对象应接收调试器用户界面中当前上下文。
objectLocation
对象在调试目标的地址空间中的位置。 如果位置是虚拟地址,则客户端可以使用 64 位偏移量构造位置到地址空间;否则 - 必须从另一个调试主机接口检索位置。
objectType
要构造的对象的类型。 如果没有在上下文参数中传递显式上下文,该类型的上下文将传播到新创建的对象。
object
此处将返回新创建的对象引用。
返回值
此方法返回指示成功或失败的 HRESULT。
言论
示例代码
ComPtr<IDataModelManager3> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spType; /* get a type (see CreateTypedObject) */
Location creationLocation; /* get a location (see CreateTypedObject) */
ComPtr<IModelObject> spObjectRef;
if (SUCCEEDED(spManager->CreateTypedObjectReference(nullptr,
creationLocation,
spType.Get(),
&spObjectRef)))
{
// spObjectRef now contains a reference to the underlying object.
// This can be dereferenced to get the value or passed to the
// EE to do an assignment.
ComPtr<IModelObject> spObject;
if (SUCCEEDED(spObjectRef->Dereference(&spObject)))
{
// spObject now contains the object itself.
}
}
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |