Share via


IDebugHostSymbols::GetMostDerivedObject-Methode (dbgmodel.h)

Das GetMostDerivedObject verwendet das Typsystem des Debuggers, um den Laufzeittyp eines Objekts anhand seines statischen Typs zu bestimmen. Diese Methode verwendet nur symbolische Informationen und Heuristiken, die auf der Typsystemebene verfügbar sind, um diese Analyse durchzuführen. Diese Informationen können C++-RTTI (Laufzeittypinformationen) oder die Analyse der Form der virtuellen Funktionstabellen des Objekts umfassen. Es enthält keine Dinge wie das bevorzugte Laufzeittypkonzept für ein IModelObject.It does not include things as the preferred runtime type concept on an IModelObject.

Wenn die Analyse keinen Laufzeittyp oder einen anderen Laufzeittyp als den an die Methode übergebenen statischen Typ finden kann, werden möglicherweise der Eingabespeicherort und -typ übergeben. Die Methode schlägt aus diesen Gründen nicht fehl.

Syntax

HRESULT GetMostDerivedObject(
  IDebugHostContext *pContext,
  Location          location,
  IDebugHostType    *objectType,
  Location          *derivedLocation,
  IDebugHostType    **derivedType
);

Parameter

pContext

Der Kontext, in dem der angegebene Speicherort gültig ist. Wenn dieser Wert nicht angegeben wird, wird angenommen, dass der Kontext mit dem kontext identisch ist, der von objectType angegeben wird.

location

Die Position des statisch typisierten Objekts innerhalb des Adressraums, der entweder durch das pContext-Argument oder das objectType-Argument angegeben wird.

objectType

Der statische Typ des Objekts an der angegebenen Position.

derivedLocation

Die Position des laufzeittypisierten Objekts innerhalb des Adressraums, der entweder durch das pContext-Argument oder das objectType-Argument angegeben wird. Dies ist möglicherweise identisch mit dem speicherort, der durch das Argument location angegeben wird.

derivedType

Der Laufzeittyp des Objekts wird hier zurückgegeben. Dies kann mit dem Typ identisch sein, der im objectType-Argument übergeben wird.

Rückgabewert

Diese Methode gibt HRESULT zurück, das den Erfolg oder Fehler angibt.

Hinweise

Beispielcode

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

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostSymbols-Schnittstelle