Share via


DkmMonitorStackWalkContext 类

定义

DkmMonitorStackWalkContext 允许具有此调用堆栈的各种组件 DkmSymbolStackWalkContext。

public ref class DkmMonitorStackWalkContext : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("4ce2f85d-5b40-4a4c-5eba-79e9228e48b1")]
public class DkmMonitorStackWalkContext : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("4ce2f85d-5b40-4a4c-5eba-79e9228e48b1")>]
type DkmMonitorStackWalkContext = class
    inherit DkmDataContainer
    interface IDisposable
Public Class DkmMonitorStackWalkContext
Inherits DkmDataContainer
Implements IDisposable
继承
DkmMonitorStackWalkContext
继承
DkmMonitorStackWalkContext
属性
实现

属性

Flags

用于控制堆栈遍检期间返回的帧的标志。

此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。

IsUnloaded

如果为此对象引发了“unloaded”事件,则返回 true (示例:DkmThread::Unload 被调用) 或对象已关闭。 请注意,检查此状态时必须小心,因为如果不进行同步,返回的状态在读取指令后可能不再准确。

(继承自 DkmDataContainer)
RuntimeInstance

DkmRuntimeInstance 类表示加载到 DkmProcess 中的执行环境,其中包含要调试的代码。

Thread

DkmThread 表示在目标进程中运行的线程。

ThreadContext

[可选]执行堆栈演练时使用的初始 Win32 CONTEXT。 此值通常为“null”,但可以设置为查看另一个调用堆栈 (例如:.cxr) 。

UniqueId

唯一标识此 DkmMonitorStackWalkContext 的 Guid。

方法

Close()

关闭 DkmMonitorStackWalkContext 对象实例。 这将跨所有组件释放与此对象关联的任何资源。 这包括跨计算机或托管/本机封送边界的资源。

DkmMonitorStackWalkContext 对象在关闭关联的 DkmThread 对象时自动关闭。

此方法只能由创建对象的组件调用。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

Create(DkmRuntimeInstance, DkmThread, ReadOnlyCollection<Byte>, DkmDataItem)

Create新的 DkmMonitorStackWalkContext 对象实例。 调用方负责在完成后关闭已创建的对象。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

Create(DkmRuntimeInstance, DkmThread, ReadOnlyCollection<Byte>, DkmStackWalkContextFlags, DkmDataItem)

Create新的 DkmMonitorStackWalkContext 对象实例。 调用方负责在完成后关闭已创建的对象。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。

GetDataItem<T>()

获取已添加到此容器实例的“T”的实例。 如果此容器不包含“T”,则此函数将返回 null。

(继承自 DkmDataContainer)
Initialize(DkmFrameRegisters, UInt32)

在演练过程开始时,在每个演练器上恰好调用一次初始化。 这让每个步进器都有机会初始化任何状态。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

RemoveDataItem<T>()

从此容器中删除“T”的实例。 通常不需要调用此方法,因为数据容器会在对象关闭时自动清空。

(继承自 DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

在数据容器中放置一个新项。

(继承自 DkmDataContainer)
UpdatePosition(DkmFrameRegisters, UInt32)

在另一个演练器遍历一个或多个帧后,堆栈合并会调用 UpdatePosition,因此必须在调用 WalkNextFrame 之前更新此演练程序。 在目标进程中维护自己的内部堆栈范围状态的运行时在此方法中可能没有任何作用。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

WalkNextFrame()

尝试遍进下一个堆栈帧。 DkmMonitorStackWalkResult 结构指示此监视器是否能够遍转帧。

位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。

显式接口实现

IDisposable.Dispose()

DkmMonitorStackWalkContext 允许具有此调用堆栈的各种组件 DkmSymbolStackWalkContext。

适用于