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 |