Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 RTTI C++ (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 nel metodo, il percorso di input e il tipo possono essere passati. 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 in corrispondenza della posizione specificata.
derivedLocation
Posizione dell'oggetto tipizzato di runtime all'interno dello spazio degli indirizzi specificato dall'argomento pContext o dall'argomento objectType. Può essere o meno uguale alla posizione specificata dall'argomento location.
derivedType
Il tipo di runtime dell'oggetto verrà restituito qui. Può essere o meno uguale al tipo passato nell'argomento objectType.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Osservazioni
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
}
}
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dbgmodel.h |