DkmProcess 类

定义

DkmProcess 表示正在调试的目标进程。 调试器调试进程,因此这是调试的基本单元。 DkmProcess 可以表示系统进程或虚拟进程,例如小型转用。

public ref class DkmProcess : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")]
public class DkmProcess : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")>]
type DkmProcess = class
    inherit DkmDataContainer
Public Class DkmProcess
Inherits DkmDataContainer
继承
继承
属性

属性

BaseDebugMonitorId

DkmBaseDebugMonitorId 标识用于检查和控制调试进程的基本调试监视器。 例如,DkmBaseDebugMonitorId.WindowsProcess 用于由 Win32 调试 API 调试的进程,DkmBaseDebugMonitorId.DumpFile 用于最小化umps。

Connection

这表示监视器与 IDE 之间的连接。 如果监视器与 IDE 在同一进程中运行,则它可以是本地连接,也可以是远程连接。 在监视过程中,只有一个连接。

DebugLaunchSettings

启动调试操作期间从项目系统或 LaunchDebugTargets 的其他调用方提供的设置 (或其他各种启动调试 API) 。

EngineSettings

包含会话范围的调试设置。 每个引擎 Guid (有一个此对象的实例,例如:一个用于 COMPlusOnlyEng2 的实例,一个用于 COMPlusNativeEng) 实例。

IsAppPackage

如此 如果进程属于 Windows 应用商店应用包或Windows Phone应用包。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

IsMultiArch

如此 如果进程包含来自多个体系结构的代码。

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引入的。

IsNativeDebuggingEnabled

如果为 true,调试器将尝试调试本机代码 - 它将在本机异常时停止,加载符号,在调用堆栈上显示本机帧,绑定和命中断点,并在处于中断状态时使本机线程停止。

IsUnloaded

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

(继承自 DkmDataContainer)
LivePart

[可选]与正在运行的进程相关的信息。 例如,对于最小枚举,此部件将不存在。

Path

进程起始可执行文件的完整路径。

StartMethod

StartMethod 描述调试引擎如何开始调试此过程。

SystemInformation

包含有关运行此进程的计算机系统的信息。 如果此过程在 WOW (64 位操作系统上的 32 位仿真下运行) 则此信息将针对 32 位子系统而不是 64 位子系统。

UniqueId

唯一标识此进程对象的 Guid。 此 Guid 值与在 SDM 层 (IDebugProcess2::GetProcessId) 和自动化层公开的 Guid 相同。

方法

AbortingFuncEvalExecution(DkmFuncEvalFlags)

中止函数评估时,运行时调试监视器会调用 AbortingFuncEvalExecution。 AbortingFuncEvalExecution 将更新 DkmProcess 对象的内部状态,因此停止事件管理器将允许通过两个停止事件:函数评估完成断点或异步中断。

AddExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmAddExceptionTriggerAsyncResult>)

添加异常触发器,以便在满足异常触发器时发送 ExceptionTriggerHit 事件。

如果已为此 {SourceId, DkmExceptionTrigger} 元组定义异常,则将使用新设置修改现有触发器。 例如,如果组件定义在引发访问冲突异常时停止的触发器,并且稍后将触发器设置为在未处理任何 Win32 异常时触发,则将删除访问冲突触发器。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

AddExceptionTrigger(Guid, DkmExceptionTrigger)

添加异常触发器,以便在满足异常触发器时发送 ExceptionTriggerHit 事件。

如果已为此 {SourceId, DkmExceptionTrigger} 元组定义异常,则将使用新设置修改现有触发器。 例如,如果组件定义在引发访问冲突异常时停止的触发器,并且稍后将触发器设置为在未处理任何 Win32 异常时触发,则将删除访问冲突触发器。

AllocateVirtualMemory(UInt64, Int32, Int32, Int32)

在目标进程的虚拟地址空间内保留和/或提交内存区域。 除非使用 MEM_RESET,该函数将分配的内存初始化为零。 有关其他信息,请参阅 MSDN 中的 VirtualAlloc Win32 API。

AsyncBreak(Boolean)

此方法将告知调试监视器异步中断调试对象进程的执行。 操作完成后,将发送 AsyncBreakComplete 事件。

BeforeStopDebugging()

在终止或分离目标进程之前通知的处理程序。

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

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

ClearAllGPUMemoryAccessWarnings()

禁用所有活动的 GPU 内存访问警告。

ClearExceptionTriggers(Guid)

删除已使用特定 SourceId 设置的所有异常触发器。 此方法返回后,异常触发器将不再引发 ExceptionTriggerHit 事件。 关闭 DkmProcess 对象时,会自动清除异常触发器。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

创建新的进程对象。 在处理 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 时,从事件线程上的基本调试监视器调用此方法。

此方法将发送 ProcessCreate 事件。

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

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引入的。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

创建新的进程对象。 在处理 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 时,从事件线程上的基本调试监视器调用此方法。

此方法将发送 ProcessCreate 事件。

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

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, DkmProcess+Live, DkmDataItem)

创建新的进程对象。 在处理 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 时,从事件线程上的基本调试监视器调用此方法。

此方法将发送 ProcessCreate 事件。

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

CreateNativeInstructionAddress(UInt64)

将 CPU 指令解析为本机模块,并返回表示此 CPU 指令的 DkmNativeInstructionAddress。 如果指令指针不在模块中,则改为返回 DkmUnknownInstructionAddress 对象。

Detach()

调用此方法可告知监视器从目标进程分离。 这会触发在事件线程上发送 ProcessExit 事件。

Disassemble(DkmInstructionAddress, UInt32)

在调试过程中反汇编地址范围。

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

FindNativeModule(UInt64)

将虚拟地址解析为本机模块。 如果虚拟地址不在模块中,则本机) 中返回代码 (S_FALSE 返回 null。 不会返回禁用的模块。

FindNativeModule(UInt64, Boolean)

将虚拟地址解析为本机模块。 如果虚拟地址不在模块中,则本机) 中返回代码 (S_FALSE 返回 null。

FindProcess(Guid)

查找 DkmProcess 对象。 如果不存在具有给定输入键的对象,FindProcess 将失败。

FindProcessSnapshot(UInt32)

在此 DkmProcess 中查找 DkmProcessSnapshot 元素。 如果不存在具有给定输入键的元素,FindProcessSnapshot 将失败。

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

FindRuntimeInstance(DkmRuntimeInstanceId)

在此 DkmProcess 中查找 DkmRuntimeInstance 元素。 如果不存在具有给定输入键的元素,FindRuntimeInstance 将失败。

FindSystemThread(Int32)

在此 DkmProcess 中查找 DkmThread 元素。 如果不存在具有给定输入键的元素,FindSystemThread 将失败。 如果找到对象,它将始终包含“系统”部件。

FreeVirtualMemory(UInt64, Int32, Int32)

释放和/或取消提交目标进程的虚拟地址空间中的内存区域。 有关其他信息,请参阅 MSDN 中的 VirtualFree Win32 API。

GetComputeKernels()

GetComputeKernels 枚举此 DkmProcess 对象的 DkmGPUComputeKernel 元素。

GetDataItem<T>()

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

(继承自 DkmDataContainer)
GetDumpExePath()

返回正在调试的微型转储中主可执行文件的路径。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。

GetDumpSaveTime()

返回保存小型转储的时间。

此 API 是在 Visual Studio 16 Update 10 (DkmApiVersion.VS16Update10) 中引入的。

GetEndingTimeContext()

获取表示跟踪结束位置的时间上下文。

此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引入的。

GetGPUBreakpointBehavior()

获取进程的断点行为。

GetHandleCount()

获取进程中的活动句柄数。

GetInstructionAddress(DkmInstructionAddress, Int32)

返回相对于起始地址的第 k 条指令的地址。 对于常量长度指令集,这是简单的算术。 对于可变长度指令集,需要反向反汇编来获取此地址。

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

GetInstructionAddress(DkmWorkList, DkmInstructionAddress, Int32, DkmCompletionRoutine<DkmGetRelativeInstructionAddressAsyncResult>)

返回相对于起始地址的第 k 条指令的地址。 对于常量长度指令集,这是简单的算术。 对于可变长度指令集,需要反向反汇编来获取此地址。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

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

GetInstructionAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmGetInstructionAddressAsyncResult>)

将 CPU InstructionAddress 解析为 DkmInstructionAddress。

此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

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

GetManagedStowedException()

从转储获取托管的存放异常。 如果没有托管的存放异常,这将返回S_FALSE。

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

GetMemoryReadTime(UInt64, UInt32, DkmMemoryTimeFlags)

调用 以找出相对于当前进程时间的时间,从内存读取值解析。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 中引入的。

GetNativeRuntimeInstance()

提供对 DkmRuntimeInstance 的访问,该访问适用于进程中的朴素代码。 一个进程只有一个 DkmRuntimeInstance。

GetNativeStowedException()

从转储获取本机存储异常。 如果没有本机存储异常,这将返回S_FALSE。

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

GetPendingBreakpoints()

GetPendingBreakpoints 枚举此 DkmProcess 对象的 DkmPendingBreakpoint 元素。

GetProcesses()

GetProcesses 枚举所有创建的 DkmProcess 对象。

GetProcessExecuteDirection()

获取一个值,该值指示进程是正向运行还是反向运行。 此方法仅针对时间旅行过程实现。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 中引入的。

GetProcessorArchitecture(UInt64, DkmProcessorArchitecture)

确定给定地址的体系结构。

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引入的。

GetProcessSnapshots()

GetProcessSnapshots 枚举此 DkmProcess 对象的 DkmProcessSnapshot 元素。

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

GetRunningTime()

获取自上次调用 ResetRunningTime () 以来调试对象一直运行的时钟周期数。

GetRuntimeFunctionResolutionRequests()

GetRuntimeFunctionResolutionRequests 枚举此 DkmProcess 对象的 DkmRuntimeFunctionResolutionRequest 元素。

GetRuntimeInstances()

GetRuntimeInstances 枚举此 DkmProcess 对象的 DkmRuntimeInstance 元素。

GetSerializedProcessInfo()

获取有关序列化进程的信息。

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

GetSourceSnapshot()

获取已调试进程的源快照对象。 调试的进程必须表示快照。

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

GetStowedExceptions()

从转储获取已存放的异常。

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

GetSystemThreads()

提供进程中的活动系统线程的列表。 (DkmThread::System 为) null 或已卸载的系统线程将不存在在此集合中。

GetTargetCompositionServices(DkmTargetCompositionScenario, Object)

获取相应方案的 IDebugServiceManager,可用于访问基于目标组合的扩展。

位置约束:目标组合接口不能跨计算机封送,但可以安全地使用(如果可用)。

此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引入的。

GetThreads()

GetThreads 枚举此 DkmProcess 对象的 DkmThread 元素。

InvisibleWriteMemory(UInt64, Byte[])

将内存写入目标进程,但隐藏对 ReadMemory 的调用的写入。 此 API 可用于修补目标进程中的指令或数据,以实现调试器功能。 在数据传输发生之前,系统会验证指定大小的基址和内存中的所有数据是否可供写入访问,如果无法访问,函数将引发E_INVALID_MEMORY_ADDRESS错误。

IsLoadComplete()

如果在我们开始调试进程时为存在的所有运行时发送所有初始模块加载/线程创建后,则返回 true。 请注意,此定义可能与加载完成的 Win32 调试 API 定义不同,因为其他运行时实例可能需要额外的加载时间。

此 API 是在 Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) 中引入的。

IsStopped()

此方法允许组件确定调度程序是否认为进程已停止。 不需要从需要停止目标进程的接口方法中调用此方法,但在可能从运行模式调用的操作期间,此方法可能会有所帮助。

LocateBinary(String, String, String, UInt32, UInt32)

此方法将在本地磁盘和任何配置的符号服务器中搜索与参数匹配的二进制文件。 返回本地磁盘上此文件的路径。 如果文件位于符号服务器上,则会将其下载到缓存并返回本地路径。

OnAsyncBreakComplete(DkmAsyncBreakStatus, DkmThread)

引发 AsyncBreakComplete 事件。 实现事件接收器接口的组件将收到事件通知。 此方法将排队事件,控件将立即返回到调用方。

OnEntryPoint(DkmThread)

引发 EntryPoint 事件。 实现事件接收器接口的组件将收到事件通知。 此方法将排队事件,控件将立即返回到调用方。

OnHiddenEntryPoint(DkmThread)

引发 HiddenEntryPoint 事件。 实现事件接收器接口的组件将收到事件通知。 此方法将排队事件,控件将立即返回到调用方。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

OnInstructionPatchInserted(UInt64, Byte[])

由基本调试监视器调用的方法,以通知其他组件目标进程的指令内存已修改。 目前,这仅用于断点插入。

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

OnInstructionPatchRemoved(UInt64, Byte[])

基本调试监视器调用的方法通知其他组件目标进程的指令内存已还原到其原始状态。 目前,这仅用于删除断点。

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

OnLoadComplete()

此方法由进程的基本调试监视器调用,以引发 LoadComplete 事件。 LoadComplete 是在为进程中的初始模块集创建 DkmModuleInstance 对象后发出的,并且通常也创建了初始线程集。

使用 DkmLoadCompleteEventDeferral.Add 的运行时调试监视器可能会延迟加载完成事件,在这种情况下,此方法将立即完成。 否则,此方法会将事件发送到实现事件同步接口的所有组件。 一旦通知所有组件,控件将返回。

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

OnProcessSnapshotAdded(DkmProcessSnapshot)

为给定进程采取进程快照后通知的处理程序。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。

OnProcessSnapshotRemoved(DkmProcessSnapshot)

从给定进程中删除进程快照后通知的处理程序。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。

OnTraceTimeContextSet(DkmTraceTimeContext, DkmTraceTimeContext, DkmTraceTimeContext, DkmThread)

引发 TraceTimeContextSet 事件。 实现事件接收器接口的组件将收到事件通知。 通知所有组件后,控制将返回。

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

此 API 是在 Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2) 中引入的。

QueryPerformanceCounters(DkmWorkList, DkmCompletionRoutine<DkmPerformanceCountersAsyncResult>)

异步方法,用于从进程中运行时发出的事件收集的 IDkmPerformanceMeasurementDispatcherService 获取计时数据。 这是异步调用的,因为获取调试器开销可能非常昂贵。

此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

ReadMemory(UInt64, DkmReadMemoryFlags, Byte[])

读取目标进程的内存。

ReadMemory(UInt64, DkmReadMemoryFlags, Void*, Int32)

读取目标进程的内存。

ReadMemoryString(UInt64, DkmReadMemoryFlags, UInt16, Int32)

从目标进程进程的内存中读取以 null 结尾的字符串。 这可用于读取 ANSI 或 Unicode (UTF-8、UTF-16 或 UTF-32) 字符串。

RemoveDataItem<T>()

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

(继承自 DkmDataContainer)
RemoveExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmRemoveExceptionTriggerAsyncResult>)

删除以前设置的异常触发器。 请注意,处理阶段将被忽略,不需要与最初提供的值匹配。

此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

RemoveExceptionTrigger(Guid, DkmExceptionTrigger)

删除以前设置的异常触发器。 请注意,处理阶段将被忽略,不需要与最初提供的值匹配。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

RemoveSnapshotById(UInt32)

删除此过程的进程快照。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 中引入的。

RemoveSnapshots()

删除此过程的进程快照。

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

SearchRuntimeFunctionTable(UInt64, UInt64)

如果可能,该方法将返回地址IMAGE_RUNTIME_FUNCTION_ENTRY的内容。 若要搜索静态条目,调用方应在 DkmNativeModuleInstance 上调用等效的方法。

SetCoreDumpParserTargetCompositionServices(Object)

获取核心文件分析方案的 IDebugServiceManager,该方案可用于访问基于目标组合的扩展。

位置约束:不能跨计算机封送目标组合接口,但可以安全使用(如果可用)。

此 API 是在 Visual Studio 16 Update 8 (DkmApiVersion.VS16Update8) 中引入的。

SetDataItem<T>(DkmDataCreationDisposition, T)

将新项放在数据容器中。

(继承自 DkmDataContainer)
SetDetachUnavailable(Int32)

由组件调用,以指示进程上不允许分离。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。

SetGPUMemoryAccessWarning(Int32, Boolean)

启用/禁用特定的 GPU 内存访问警告。

SetProcessExecuteDirection(DkmProcessExecuteDirection)

设置进程执行方向。 方向可以是向前或反向。 此方法仅针对时间行程过程实现。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 中引入的。

SetRunningTime(UInt64)

将运行时间计数器设置为指定的值。

StoppingEventProcessingBegin(Boolean)

停止EventProcessingBegin 由事件线程上的基本调试监视器调用。 它会通知调度程序目标进程已停止,并且可能已到达停止事件。 例如,Win32 基本调试监视器在收到来自操作系统的EXCEPTION_DEBUG_EVENT时调用它。 此方法更新 DkmProcess 对象的内部状态,以便允许发送停止事件。

StoppingEventProcessingContinue()

StoppingEventProcessingContinue 由事件线程上的基本调试监视器调用。 在发出当前批处理中的所有停止事件后,将调用此方法 (例如:名为 DkmRuntimeBreakpoint.OnHit) 。 此方法将通知已实现停止事件通知接口的组件,并将调用执行管理器以将进程滑落到安全点。 在成功调用 StoppingEventProcessingBegin 后,基本调试监视器必须调用 StoppingEventProcessingContinue。 发出所有停止事件后的基本调试监视器。

当基本调试监视器位于此方法中时,它应该被重新调用。

TakeSnapshot(UInt64, DkmThread)

获取调试对象的快照。

位置约束:服务器。

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

TakeSnapshotWithException(UInt64, DkmExceptionInformation)

获取调试对象的快照。

位置约束:服务器。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 中引入的。

Terminate(Int32)

调用此方法可告知监视器终止目标进程。 这将触发在事件线程上发送 ProcessExit 事件。

TryLocateBinary(String, String, String, UInt32, UInt32)

调用以启动查找之前可能未找到或尝试加载其映像的二进制文件。 此方法将在本地磁盘和任何配置的符号服务器中搜索与参数匹配的二进制文件。 返回本地磁盘上此文件的路径。 如果文件位于符号服务器上,则会将其下载到缓存并返回本地路径。

此 API 是在 Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1) 中引入的。

Unload(Int32)

当监视器调用 DkmProcess::Unload 时,调度程序会发送 ProcessExit。

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

VolatileReadMemory(UInt64, Byte[])

从目标进程读取内存。 此方法与“ReadMemory”的不同之处在于,可以随时调用此方法, (不只是在停止目标) 并且调试器不会尝试缓存此操作的结果时。

VolatileReadMemory(UInt64, Void*, Int32)

从目标进程读取内存。 此方法与“ReadMemory”的不同之处在于,可以随时调用此方法, (不只是在停止目标) 并且调试器不会尝试缓存此操作的结果时。

VolatileWriteMemory(UInt64, Byte[])

写入目标进程的内存。 此方法与“WriteMemory”的不同之处在于,可以随时调用此方法, (不只是在停止目标) 并且调试器不会尝试缓存此操作的结果时。 如果无法写入任何内存,将引发E_INVALID_MEMORY_ADDRESS错误。 由于内存写入可能在运行模式下发生,因此此失败可能在复制操作已开始后发生,因此可能导致目标进程中的内存损坏。 因此,必须谨慎使用此函数,失败可能是致命的。

WaitForPausingEventProcessingComplete(Int32, Boolean)

可以从监视组件调用此方法,以等待暂停事件处理的任何非停止,以及当前正在完成的任何 IDkmProcessContinueNotification 处理。 除此之外,这在尝试中止 func-evals 时会很有帮助,方法是确保目标进程有机会运行。 请注意,此方法不保证不会立即发生更多暂停事件,因此代码不应假定从此 API 返回后,不会停止事件处理。

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

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。

WriteDump(DkmDumpType, String, DkmThread)

此方法会将进程的内存转储写出到指定的路径。

WriteMemory(UInt64, Byte[])

将内存写入目标进程。 在进行数据传输之前,系统会验证指定大小的基址和内存中的所有数据是否可供写入访问,如果无法访问,函数将引发E_INVALID_MEMORY_ADDRESS错误。

适用于