IXCLRDataProcess::FollowStub2 方法
给定一个地址,该地址是 CLR 存根(以及上一个后续的可能状态)确定下一个执行地址,检查存根是否已退出。
注意:仅当进程修订返回 IXCLRDataProcess::Request
至少为 7 时,此方法才可用。 对于较低的进程修订,调用方应使用过时 IXCLRDataProcess::FollowStub
的方法。
注意
此 API 最初旨在供运行时内部使用。 尽管现在支持第三方使用,但我们建议尽量使用 ICorDebug
和 ICorProfiler
API。
语法
HRESULT FollowStub(
[in] IXCLRDataTask *task,
[in] ULONG32 inFlags,
[in] CLRDATA_ADDRESS inAddr,
[in] CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
[out] CLRDATA_ADDRESS *outAddr,
[out] CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
[out] ULONG32 *outFlags
);
参数
task
[in]要遵循存根的任务。
inFlags
[in]描述如何遵循存根的一组标志。 这必须是当前仅包含一个值的枚举值 CLRDataFollowStubInFlag
:CLRDATA_FOLLOW_STUB_DEFAULT (0)。
inAddr
[in]要遵循的存根的地址
inBuffer
[in]一个不透明的数据缓冲区,用于在内部维护走存根链的状态。 在对方法的初始调用 FollowStub
中,这应该是 NULL。
outAddr
[out]根据存根确定的下一个执行地址。
outBuffer
[out]一个不透明的数据缓冲区,用于在内部维护走存根链的状态。
outFlags
[out]描述遵循存根的结果的一组标志。 这是枚举的值 CLRDataFollowStubOutFlag
。 如果值为 CLRDATA_FOLLOW_STUB_INTERMEDIATE
(0),则结果是遵循存根的中间步骤,调用方可以再次调用 FollowStub。 如果值为 CLRDATA_FOLLOW_STUB_EXIT
(1),则这是存根链的末尾, outAddr
是链末尾的执行地址。
注解
给定地址可以通过返回类型CLRDATA_ADDRESS_RUNTIME_MANAGED_STUB
或CLRDATA_ADDRESS_RUNTIME_UNMANAGED_STUB
的方法的使用IXCLRDataProcess::GetAddressType
来确定为存根。
提供的方法是接口的 IXCLRDataProcess
一部分,对应于虚拟方法表的第 48 个槽。
要求
平台:请参阅系统要求。 标头:无;库:无;.NET Framework 版本:自 4.7 起可用