Método IDebugHostSymbols::GetMostDerivedObject (dbgmodel.h)
O GetMostDerivedObject usará o sistema de tipos do depurador para determinar o tipo de runtime de um objeto de seu tipo estático. Esse método usará apenas informações simbólicas e heurísticas disponíveis na camada do sistema de tipos para executar essa análise. Essas informações podem incluir RTTI do C++ (informações de tipo de tempo de execução) ou análise da forma das tabelas de funções virtuais do objeto. Ele não inclui coisas como o conceito de tipo de runtime preferencial em um IModelObject.
Se a análise não puder encontrar um tipo de runtime ou não puder encontrar um tipo de runtime diferente do tipo estático passado para o método , o local e o tipo de entrada poderão ser passados para fora. O método não falhará por esses motivos.
Sintaxe
HRESULT GetMostDerivedObject(
IDebugHostContext *pContext,
Location location,
IDebugHostType *objectType,
Location *derivedLocation,
IDebugHostType **derivedType
);
Parâmetros
pContext
O contexto no qual o local fornecido é válido. Se esse valor não for especificado, o contexto será considerado idêntico ao contexto fornecido por objectType.
location
O local do objeto tipado estaticamente dentro do espaço de endereço fornecido pelo argumento pContext ou pelo argumento objectType.
objectType
O tipo estático do objeto no local determinado.
derivedLocation
O local do objeto digitado em runtime dentro do espaço de endereço fornecido pelo argumento pContext ou pelo argumento objectType. Isso pode ou não ser o mesmo que o local fornecido pelo argumento location.
derivedType
O tipo de runtime do objeto será retornado aqui. Isso pode ou não ser o mesmo que o tipo passado no argumento objectType.
Retornar valor
Esse método retorna HRESULT que indica êxito ou falha.
Comentários
Código de exemplo
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
}
}
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dbgmodel.h |