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
}
}
必要条件
要件 | 価値 |
---|---|
ヘッダー | dbgmodel.h |
関連項目
IDebugHostSymbols インターフェイス の