IDebugHostSymbols::GetMostDerivedObject メソッド (dbgmodel.h)
GetMostDerivedObject は、デバッガーの型システムを使用して、静的型からオブジェクトのランタイム型を決定します。 このメソッドは、この分析を実行するために、型システム レイヤーで使用可能なシンボリック情報とヒューリスティックのみを使用します。 このような情報には、C++ RTTI (実行時の型情報) や、オブジェクトの仮想関数テーブルの形状の分析が含まれる場合があります。 IModelObject で推奨されるランタイム型の概念などは含まれません。
分析でランタイム型が見つからない場合、または メソッドに渡された静的型と異なるランタイム型が見つからない場合は、入力の場所と型が渡される可能性があります。これらの理由により、 メソッドは失敗しません。
構文
HRESULT GetMostDerivedObject(
IDebugHostContext *pContext,
Location location,
IDebugHostType *objectType,
Location *derivedLocation,
IDebugHostType **derivedType
);
パラメーター
pContext
指定した場所が有効なコンテキスト。 この値を指定しない場合、コンテキストは objectType によって指定されたコンテキストと同じであると見なされます。
location
pContext 引数または objectType 引数によって指定されたアドレス空間内の静的に型指定されたオブジェクトの場所。
objectType
指定した場所にあるオブジェクトの静的な型。
derivedLocation
pContext 引数または objectType 引数によって指定されたアドレス空間内のランタイム型指定オブジェクトの場所。 これは、location 引数によって指定された場所と同じでも、そうでない場合もあります。
derivedType
オブジェクトのランタイム型がここで返されます。 これは、objectType 引数で渡された型と同じである場合とそうでない場合があります。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
サンプル コード
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
}
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |