Compartir a través de


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

GetMostDerivedObject usará el sistema de tipos del depurador para determinar el tipo en tiempo de ejecución de un objeto a partir de su tipo estático. Este método solo usará información simbólica y heurística disponibles en la capa del sistema de tipos para realizar este análisis. Esta información puede incluir RTTI de C++ (información de tipo de tiempo de ejecución) o el análisis de la forma de las tablas de funciones virtuales del objeto. No incluye elementos como el concepto de tipo en tiempo de ejecución preferido en un IModelObject.

Si el análisis no encuentra un tipo en tiempo de ejecución o no puede encontrar un tipo en tiempo de ejecución diferente del tipo estático pasado al método, se puede pasar la ubicación de entrada y el tipo. El método no producirá un error por estos motivos.

Sintaxis

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

Parámetros

pContext

Contexto en el que la ubicación especificada es válida. Si no se especifica este valor, se supone que el contexto es idéntico al contexto proporcionado por objectType.

location

Ubicación del objeto con tipo estático dentro del espacio de direcciones proporcionado por el argumento pContext o el argumento objectType.

objectType

Tipo estático del objeto en la ubicación especificada.

derivedLocation

Ubicación del objeto con tipo en tiempo de ejecución dentro del espacio de direcciones proporcionado por el argumento pContext o el argumento objectType. Esto puede o no ser el mismo que la ubicación dada por el argumento location.

derivedType

El tipo en tiempo de ejecución del objeto se devolverá aquí. Esto puede o no ser el mismo que el tipo pasado en el argumento objectType.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error.

Comentarios

Código de ejemplo

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
Header dbgmodel.h

Consulte también

Interfaz IDebugHostSymbols