Partager via


IDebugHostSymbols ::GetMostDerivedObject, méthode (dbgmodel.h)

GetMostDerivedObject utilise le système de type du débogueur pour déterminer le type d’exécution d’un objet à partir de son type statique. Cette méthode utilise uniquement des informations symboliques et des heuristiques disponibles au niveau de la couche système de type afin d’effectuer cette analyse. Ces informations peuvent inclure le RTTI C++ (informations de type d’exécution) ou l’analyse de la forme des tables de fonctions virtuelles de l’objet. Il n’inclut pas de choses telles que le concept de type d’exécution préféré sur un IModelObject.

Si l’analyse ne trouve pas un type d’exécution ou ne trouve pas un type d’exécution différent du type statique passé dans la méthode, l’emplacement d’entrée et le type peuvent être passés. La méthode ne échoue pas pour ces raisons.

Syntaxe

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

Paramètres

pContext

Contexte dans lequel l’emplacement donné est valide. Si cette valeur n’est pas spécifiée, le contexte est supposé être identique au contexte donné par objectType.

location

Emplacement de l’objet typé statiquement dans l’espace d’adressage donné par l’argument pContext ou l’argument objectType.

objectType

Type statique de l’objet à l’emplacement donné.

derivedLocation

Emplacement de l’objet typé runtime dans l’espace d’adressage donné par l’argument pContext ou l’argument objectType. Cela peut ou non être identique à l’emplacement donné par l’argument d’emplacement.

derivedType

Le type d’exécution de l’objet est retourné ici. Cela peut ou non être identique au type passé dans l’argument objectType.

Valeur de retour

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

exemple de code

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

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDebugHostSymbols