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


Метод IDataModelManager::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

См. также раздел

Интерфейс IDataModelManager