IXCLRDataProcess::FollowStub Method
Given an address which is a CLR stub (and potentially state from a previous follow) determine the next execution address at which to check whether the stub has been exited.
NOTE: This method is obsolete. Callers should utilize IXCLRDataProcess::FollowStub2
whenever available. Such is available if the process revision as returned by IXCLRDataProcess::Request
is at least 7.
Note
This API was originally designed for internal use in the runtime. Although it is now supported for 3rd party use, we recommend working with ICorDebug
and ICorProfiler
APIs when possible.
Syntax
HRESULT FollowStub(
[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
);
Parameters
inFlags
[in] A set of flags describing how to follow the stub. This must be a value of the CLRDataFollowStubInFlag
enumeration which presently contains only one value: CLRDATA_FOLLOW_STUB_DEFAULT (0).
inAddr
[in] The address of the stub to follow
inBuffer
[in] An opaque data buffer used internally to maintain the state of walking a chain of stubs. This should be NULL on the initial call to the FollowStub
method.
outAddr
[out] The next execution address determined from following the stub.
outBuffer
[out] An opaque data buffer used internally to maintain the state of walking a chain of stubs.
outFlags
[out] A set of flags describing the result of following the stub. This is a value of the CLRDataFollowStubOutFlag
enumeration. If the value is CLRDATA_FOLLOW_STUB_INTERMEDIATE
(0), the result is an intermediate step in following the stub and the caller can call FollowStub again. If the value is CLRDATA_FOLLOW_STUB_EXIT
(1), this is the end of the stub chain and the outAddr
is the execution address at the end of the chain.
Remarks
A given address can be determined to be a stub or not via usage of the IXCLRDataProcess::GetAddressType
method returning a type of CLRDATA_ADDRESS_RUNTIME_MANAGED_STUB
or CLRDATA_ADDRESS_RUNTIME_UNMANAGED_STUB
.
The provided method is part of the IXCLRDataProcess
interface and corresponds to the 47th slot of the virtual method table.
Requirements
Platforms: See System Requirements. Header: None Library: None .NET Framework Versions: Available since 4.7