IDkmMonitorStackWalk Interface

Definition

Examines the portion of the stack which is from a particular DkmRuntimeInstance and returns frames from this runtime. IDkmMonitorStackWalk is used to do this walking on the target computer, and generally does this walk without symbols. It should be noted that accurate monitor stack walk generally requires either: 1. The runtime monitor to fully understand the calling convention of its underlying runtime AND the runtime employs some mechanism so that it doesn't need code from other runtimes which are on the stack to be walked. For example, the CLR maintains stack ranges so when managed code calls off into native, the CLR can still find the managed code without needing to walk through native. -or- 2. A uniform calling convention that all code needs to follow. For example, all code must follow a uniform calling convention on x64 and IA-64 versions of Windows. Microsoft will provide five implementations of IDkmMonitorStackWalk: 1. An implementation for ICorDebug v2 2. An implementation for ICorDebug v4 3. An implementation for x64/ia64 PDATA walking. 4. An implementation for ActiveScript. 5. A default implementation that bundles together unknown regions to be walked in the engine process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

public interface class IDkmMonitorStackWalk
public interface class IDkmMonitorStackWalk
__interface IDkmMonitorStackWalk
public interface IDkmMonitorStackWalk
type IDkmMonitorStackWalk = interface
Public Interface IDkmMonitorStackWalk

Methods

Initialize(DkmMonitorStackWalkContext, DkmFrameRegisters, UInt32)

Initialize is invoked on each walker exactly once at the beginning of the walk process. This gives each walker a chance to initialize any state.

UpdatePosition(DkmMonitorStackWalkContext, DkmFrameRegisters, UInt32)

UpdatePosition is invoked by the stack merger after another walker has walked one or more frames, and so this walker must be updated before invoking WalkNextFrame. Runtimes that maintain their own internal stack range state within in the target process will likely have nothing to do within this method.

WalkNextFrame(DkmMonitorStackWalkContext)

Attempt to walk the next stack frame. The DkmMonitorStackWalkResult structure indicates if this monitor was able to walk the frame.

Applies to