Метод IDebugHostSymbols::GetMostDerivedObject (dbgmodel.h)

GetMostDerivedObject будет использовать систему типов отладчика для определения типа объекта из своего статического типа. Этот метод будет использовать только символьные сведения и эвристики, доступные на уровне системы типов для выполнения этого анализа. Такие сведения могут включать C++ RTTI (сведения о типе времени выполнения) или анализ формы таблиц виртуальных функций объекта. Он не включает такие вещи, как предпочтительное понятие типа среды выполнения для IModelObject.

Если анализ не может найти тип среды выполнения или не может найти тип среды выполнения, отличный от статического типа, переданного в метод, то входное расположение и тип могут быть переданы. Метод не завершится ошибкой по этим причинам.

Синтаксис

HRESULT GetMostDerivedObject(
  IDebugHostContext *pContext,
  Location          location,
  IDebugHostType    *objectType,
  Location          *derivedLocation,
  IDebugHostType    **derivedType
);

Параметры

pContext

Контекст, в котором допустимо заданное расположение. Если это значение не указано, предполагается, что контекст идентичен контексту, заданному objectType.

location

Расположение статического типизированного объекта в адресном пространстве, заданное аргументом pContext или аргументом objectType.

objectType

Статический тип объекта в заданном расположении.

derivedLocation

Расположение типизированного объекта среды выполнения в адресном пространстве, заданное аргументом pContext или аргументом objectType. Это может быть или не совпадать с расположением, заданным аргументом расположения.

derivedType

Тип среды выполнения объекта будет возвращен здесь. Это может быть или не совпадать с типом, переданным в аргументе objectType.

Возвращаемое значение

Этот метод возвращает HRESULT, указывающий на успех или сбой.

Замечания

пример кода

ComPtr<IDebugHost> spHost;           /* get the host */
ComPtr<IDebugHostType> spStaticType; /* get the static (compile time) type of 
                                     some object (see IModelObject::GetTargetInfo) */
Location staticLocation;             /* get the static location of some object
                                        (see IModelObject::GetTargetInfo) */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    ComPtr<IDebugHostType> spRuntimeType;
    Location runtimeLocation;
    if (SUCCEEDED(spSym->GetMostDerivedObject(USE_CURRENT_HOST_CONTEXT,
                                              spStaticType.Get(), 
                                              staticLocation, 
                                              &spRuntimeType, 
                                              &runtimeLocation)))
    {
        // spRuntimeType contains the runtime type of the object as 
        // determined from type system means (e.g.: RTTI or v-table analysis)
        // runtimeLocation contains the location of the runtime type of the object
    }
}

Требования

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

См. также

интерфейс IDebugHostSymbols