IDataModelManager::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<IDataModelManager> 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.
    }
}

要求

要求
Header dbgmodel.h

另请参阅

IDataModelManager 接口