Partager via


Méthode IDebugHostSymbols ::GetMostDerivedObject (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 les informations symboliques et les heuristiques disponibles au niveau de la couche système de type pour effectuer cette analyse. Ces informations peuvent inclure C++ RTTI (informations sur le type d’exécution) ou l’analyse de la forme des tables de fonctions virtuelles de l’objet. Il n’inclut pas les éléments tels que le concept de type runtime 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 transmis à la méthode, l’emplacement d’entrée et le type peuvent être passés. La méthode n’é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 location.

derivedType

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

Valeur retournée

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

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostSymbols