Compartilhar via


Método IDebugHostSymbols::GetMostDerivedObject (dbgmodel.h)

O GetMostDerivedObject usará o sistema de tipos do depurador para determinar o tipo de runtime de um objeto de seu tipo estático. Esse método usará apenas informações simbólicas e heurísticas disponíveis na camada do sistema de tipos para executar essa análise. Essas informações podem incluir RTTI do C++ (informações de tipo de tempo de execução) ou análise da forma das tabelas de funções virtuais do objeto. Ele não inclui coisas como o conceito de tipo de runtime preferencial em um IModelObject.

Se a análise não puder encontrar um tipo de runtime ou não puder encontrar um tipo de runtime diferente do tipo estático passado para o método , o local e o tipo de entrada poderão ser passados para fora. O método não falhará por esses motivos.

Sintaxe

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

Parâmetros

pContext

O contexto no qual o local fornecido é válido. Se esse valor não for especificado, o contexto será considerado idêntico ao contexto fornecido por objectType.

location

O local do objeto tipado estaticamente dentro do espaço de endereço fornecido pelo argumento pContext ou pelo argumento objectType.

objectType

O tipo estático do objeto no local determinado.

derivedLocation

O local do objeto digitado em runtime dentro do espaço de endereço fornecido pelo argumento pContext ou pelo argumento objectType. Isso pode ou não ser o mesmo que o local fornecido pelo argumento location.

derivedType

O tipo de runtime do objeto será retornado aqui. Isso pode ou não ser o mesmo que o tipo passado no argumento objectType.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

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

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDebugHostSymbols