IModelObject::GetLocation メソッド (dbgmodel.h)
GetLocation メソッドは、ネイティブ オブジェクトの場所を返します。 このような場所は通常、デバッグ ターゲットのアドレス空間内の仮想アドレスですが、必ずしもそうであるとは限りません。 このメソッドによって返される場所は、仮想アドレス、レジスタまたはサブレジスタ内の配置を示す、またはデバッグ ホストで定義されている他の任意のアドレス空間を示す抽象場所です。 結果の Location オブジェクトの HostDefined フィールドが 0 の場合、場所が実際には仮想アドレスであることを示します。 このような仮想アドレスは、結果の場所の Offset フィールドを調べることによって取得できます。 HostDefined フィールドの 0 以外の値は、オフセット フィールドがそのアドレス空間内のオフセットである代替アドレス空間を示します。 ここでの 0 以外の HostDefined 値の正確な意味は、デバッグ ホストに対してプライベートです。
このメソッドが呼び出される IModelObject が、デバッグ ターゲットの抽象アドレス空間内の場所を持つネイティブ コンストラクトではない場合、このメソッドはE_FAILを返します。
構文
HRESULT GetLocation(
Location *location
);
パラメーター
location
このポインターによって表されるネイティブ オブジェクトの抽象的な場所がここで返されます。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
コード サンプル
このサンプルでは、 Location 構造体 によってオブジェクトの場所が定義されています。
ComPtr<IModelObject> spObject; /* get a native object */
Location loc;
if (SUCCEEDED(spObject->GetLocation(&loc)))
{
if (loc.IsVirtualAddress()) /* or loc.HostDefined == 0 */
{
// The object is in memory at an address specified by Offset
ULONG64 address = loc.Offset;
}
else
{
// The object is in some abstract "address space" (e.g.: it's enregistered).
// Arithmetic can still be used on the 'Offset' field in order to access
// sub-objects within the abstract "address space"
}
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |