Поделиться через


Метод IDataModelManager2::CreateTypedObjectReference (dbgmodel.h)

Метод CreateTypedObjectReference семантической аналогичен методу CreateTypedObject, за исключением того, что он создает ссылку на базовую конструкцию собственного языка или языка. Созданная ссылка — это объект, имеющий вид ObjectTargetObjectReference. Это не собственная ссылка, так как базовый язык может поддерживаться (например, & C++ или &&). Объект ObjectTargetObjectReference можно получить в ссылке на C++.

Объект типа ObjectTargetObjectReference можно преобразовать в базовое значение с помощью метода dereference в IModelObject. Ссылку также можно передать базовому вычислителю выражений узла, чтобы присвоить значение соответствующему языку.

Синтаксис

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

Требования

Требование Ценность
заголовка dbgmodel.h

См. также

интерфейс IDataModelManager2