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 |