Metodo IDebugHostSymbols::GetMostDerivedObject (dbgmodel.h)
GetMostDerivedObject userà il sistema di tipi del debugger per determinare il tipo di runtime di un oggetto dal tipo statico. Questo metodo userà solo le informazioni simboliche e l'euristica disponibili a livello di sistema dei tipi per eseguire questa analisi. Tali informazioni possono includere C++ RTTI (informazioni sul tipo di runtime) o l'analisi della forma delle tabelle delle funzioni virtuali dell'oggetto. Non include elementi come il concetto di tipo di runtime preferito in un IModelObject.
Se l'analisi non riesce a trovare un tipo di runtime o non riesce a trovare un tipo di runtime diverso dal tipo statico passato al metodo, è possibile che venga passato il percorso di input e il tipo. Il metodo non avrà esito negativo per questi motivi.
Sintassi
HRESULT GetMostDerivedObject(
IDebugHostContext *pContext,
Location location,
IDebugHostType *objectType,
Location *derivedLocation,
IDebugHostType **derivedType
);
Parametri
pContext
Contesto in cui la posizione specificata è valida. Se questo valore non viene specificato, si presuppone che il contesto sia identico al contesto specificato da objectType.
location
Posizione dell'oggetto tipizzato in modo statico all'interno dello spazio indirizzi specificato dall'argomento pContext o dall'argomento objectType.
objectType
Tipo statico dell'oggetto nella posizione specificata.
derivedLocation
Posizione dell'oggetto tipizzato di runtime all'interno dello spazio indirizzi specificato dall'argomento pContext o dall'argomento objectType. Può essere uguale o meno alla posizione specificata dall'argomento location.
derivedType
Il tipo di runtime dell'oggetto verrà restituito qui. Può essere uguale o meno al tipo passato nell'argomento objectType.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Commenti
Codice di esempio
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
}
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |