GetLocation 方法将返回本机对象的位置。 虽然此类位置通常是调试目标的地址空间中的虚拟地址,但它不一定如此。 此方法返回的位置是一个抽象位置,可以是虚拟地址,可以指示寄存器或子寄存器中的放置,或者可能指示调试主机定义的其他一些任意地址空间。 如果生成的 Location 对象的 HostDefined 字段为 0,则表示该位置实际上是虚拟地址。 可以通过检查结果位置的 Offset 字段来检索此类虚拟地址。 HostDefined 字段的任何非零值都表示备用地址空间,其中 Offset 字段是该地址空间中的偏移量。 此处的非零 HostDefined 值的确切含义是调试主机的专用值。
如果调用此方法的 IModelObject 不是本机构造,并且调试目标的某些抽象地址空间中的位置,此方法将返回E_FAIL。
语法
HRESULT GetLocation(
Location *___location
);
参数
___location
此处将返回由此指针表示的本机对象的抽象位置。
返回值
此方法返回指示成功或失败的 HRESULT。
言论
代码示例
在此示例中,位置结构 定义对象的位置。
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"
}
}
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |