Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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 |