DkmClrNcContainerModuleInstance 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
“DkmClrNcContainerModuleInstance”用于表示 1:1 的模块实例,该实例由目标应用加载的物理本机 dll。 此本机 dll 充当嵌入其中 (DkmClrNcModuleInstance) 的一个或多个逻辑托管模块的逻辑容器。
此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。
public ref class DkmClrNcContainerModuleInstance : Microsoft::VisualStudio::Debugger::DkmModuleInstance
[System.Runtime.InteropServices.Guid("a79c8888-83eb-5fa2-143f-7e9b42f77bed")]
public class DkmClrNcContainerModuleInstance : Microsoft.VisualStudio.Debugger.DkmModuleInstance
[<System.Runtime.InteropServices.Guid("a79c8888-83eb-5fa2-143f-7e9b42f77bed")>]
type DkmClrNcContainerModuleInstance = class
inherit DkmModuleInstance
Public Class DkmClrNcContainerModuleInstance
Inherits DkmModuleInstance
- 继承
- 继承
- 属性
属性
AppDomain |
DkmClrAppDomain 表示正在调试的进程内的 CLR 应用域。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
BaseAddress |
[可选]模块加载位置的起始内存地址。 如果模块未在连续内存块中加载,则此值将为零。 (继承自 DkmModuleInstance) |
Connection |
这表示监视器与 IDE 之间的连接。 如果监视器与 IDE 在同一进程中运行,则它可以是本地连接,也可以是远程连接。 在监视过程中,只有一个连接。 (继承自 DkmModuleInstance) |
Flags |
指示 DkmModuleInstance 特征的标志。 (继承自 DkmModuleInstance) |
FullName |
完全限定的模块名称。 对于基于文件的模块,这是模块 (的完整路径,例如:c:\windows\system32\kernel32.dll。 (继承自 DkmModuleInstance) |
IsDisabled |
指示此模块实例是否已禁用。 调试器在很大程度上会忽略禁用的模块。 对于本机模块,禁用的模块的地址范围被视为未映射。 对于 CLR 模块,这些模块中的任何帧都隐藏在调用堆栈中。 (继承自 DkmModuleInstance) |
IsUnloaded |
如果已为此对象引发“unloaded”事件,则返回 true (示例:DkmThread::Unload) 或对象已关闭。 请注意,检查此状态时必须小心,因为如果不进行同步,则返回的状态在读取指令后可能不再准确。 (继承自 DkmDataContainer) |
LoadContext |
加载此模块的上下文的字符串说明。 例如:“Win32”或“CLR v2.0.50727:默认域”。 (继承自 DkmModuleInstance) |
LoadOrder |
加载到并包括此模块的模块实例数的整数计数。 每个运行时实例跟踪其自己的加载顺序计数。 (继承自 DkmModuleInstance) |
MemoryLayout |
指示模块在内存中的布局方式的枚举。 (继承自 DkmModuleInstance) |
MinidumpInfoPart |
[可选]“MinidumpInfoPart”用于传达有关小型转储的 DkmProcess 中的模块的其他信息。 (继承自 DkmModuleInstance) |
Module |
[可选] (与此模块实例关联的 DkmModule) 模块的符号处理程序表示形式。 此值最初为 null,并且当符号与此模块实例关联时分配。 (继承自 DkmModuleInstance) |
Name |
模块名称的简短表示形式。 对于基于文件的模块,这是文件名和扩展名 (例如:kernel32.dll) 。 (继承自 DkmModuleInstance) |
Process |
DkmProcess 表示正在调试的目标进程。 调试器调试进程,因此这是调试的基本单元。 DkmProcess 可以表示系统进程或虚拟进程,例如小型转用。 (继承自 DkmModuleInstance) |
RuntimeInstance |
表示在目标进程中运行的本机编译 CLR 实例。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
Size |
[可选]模块内存区域中的字节数。 如果模块未在连续的内存块中加载,则此值将为零。 (继承自 DkmModuleInstance) |
SymbolFileId |
[可选]包含查找此模块的符号所需的信息。 在 Win32 上,此信息包含在IMAGE_DEBUG_DIRECTORY中。 (继承自 DkmModuleInstance) |
TagValue |
DkmModuleInstance 是抽象基类。 此枚举指示此对象是哪个派生类的实例。 (继承自 DkmModuleInstance) |
TimeDateStamp |
生成已加载模块的日期/时间。 此值是从已加载模块的IMAGE_NT_HEADERS获取的。 度量单位是 FILETIME 值,它是一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数。 (继承自 DkmModuleInstance) |
UniqueId |
唯一标识 DkmModuleInstance 对象。 (继承自 DkmModuleInstance) |
Version |
[可选]文件版本信息。 (继承自 DkmModuleInstance) |
方法
ClearTransitionModuleFlag() |
运行时实例调用此方法将模块标记为边界模块。 单步执行时,运行时应检查步骤是否达到边界模块,并启动单步仲裁(如果有)。 请注意,某些运行时可能无法接受此请求。 调度程序将保留已调用 FlagAsTransitionModule 的次数的计数。 仅当对 ClearTransitionModuleFlag 的匹配调用数时,该模块将不再被视为转换模块。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmModuleInstance) |
CreateInstructionAddressFromRva(DkmWorkList, UInt32, DkmCompletionRoutine<DkmCreateInstructionAddressFromRvaAsyncResult>) |
从 RVA 创建模块中的 DkmClrNcInstructionAddress。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
Decompile() |
将模块的代码反编译为 C#,并创建嵌入此源的新可移植 PDB。 共享此符号文件的所有模块都将开始使用这些更新的符号。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引入的。 (继承自 DkmModuleInstance) |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>) |
将模块的代码反编译为 C#,并创建嵌入此源的新可移植 PDB。 共享此符号文件的所有模块都将开始使用这些更新的符号。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引入的。 (继承自 DkmModuleInstance) |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>) |
将模块的代码反编译为 C#,并创建嵌入此源的新可移植 PDB。 共享此符号文件的所有模块都将开始使用这些更新的符号。 实现应在失败时返回S_OK,并通过“HR”和“ErrorMessage”参数返回实际的 HRESULT 和任何其他错误信息。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。 (继承自 DkmModuleInstance) |
Decompile(String, Int32) |
将模块的代码反编译为 C#,并创建嵌入此源的新可移植 PDB。 共享此符号文件的所有模块都将开始使用这些更新的符号。 实现应在失败时返回S_OK,并通过“HR”和“ErrorMessage”参数返回实际的 HRESULT 和任何其他错误信息。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。 (继承自 DkmModuleInstance) |
FindEmbeddedModule(UInt32) |
在此 DkmClrNcContainerModuleInstance 中查找 DkmClrNcModuleInstance 元素。 如果不存在具有给定输入键的元素,FindEmbeddedModule 将失败。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
FlagAsTransitionModule() |
运行时实例调用此方法将模块标记为边界模块。 单步执行时,运行时应检查步骤是否达到边界模块,并启动单步仲裁(如果有)。 请注意,某些运行时可能无法接受此请求。 调度程序将保留已调用的次数的计数。 仅当对 ClearTransitionModuleFlag 的匹配调用数时,该模块将不再被视为转换模块。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmModuleInstance) |
GetClassInfo(DkmClrNcModuleInstance, ReadOnlyCollection<Byte>, DkmClrNcInstanceFieldSymbol[], UInt32) |
检索 类的布局。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
GetDataItem<T>() |
获取已添加到此容器实例的“T”实例。 如果此容器不包含“T”,则此函数将返回 null。 (继承自 DkmDataContainer) |
GetEmbeddedModules() |
GetEmbeddedModules 枚举此 DkmClrNcContainerModuleInstance 对象的 DkmClrNcModuleInstance 元素。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean) |
获取 debuggee 模块实例中地址范围的反汇编。 (继承自 DkmModuleInstance) |
GetGPUDisassemblySize() |
返回 debuggee 模块实例中的反汇编大小。 (继承自 DkmModuleInstance) |
GetMergedAssemblyImageBytes(UInt32, UInt32) |
返回从指定 RVA 开始的图像字节。 由托管 DM 的符号提供程序实现。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
GetNextGPUInstructionAddress(UInt64) |
返回相对于起始地址的下一个指令的地址。 (继承自 DkmModuleInstance) |
GetSymbolLoadInformation() |
返回一个字符串,描述在其中搜索符号的各种位置以及检查该位置的结果。 此信息用于填充模块窗口中的“符号加载信息”。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 (继承自 DkmModuleInstance) |
GetSymbolSearchResult() |
检索与此模块实例关联的任何符号搜索结果。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。 (继承自 DkmModuleInstance) |
GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>) |
检索与此模块实例关联的任何符号搜索结果。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引入的。 (继承自 DkmModuleInstance) |
GetSymbolStatusMessage(Boolean) |
获取当前符号状态的本地化字符串说明。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 (继承自 DkmModuleInstance) |
GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>) |
获取当前符号状态的本地化字符串说明。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 (继承自 DkmModuleInstance) |
IsMultiFile() |
如果容器模块不是合并的 .Net Native 程序集,则返回 true。 此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引入的。 |
IsSuppressed() |
此方法允许组件确定是否取消了模块的模块加载事件。 此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 中引入的。 (继承自 DkmModuleInstance) |
IsTransitionModule() |
如果任何运行时实例已将此模块标记为转换模块,则返回 true。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmModuleInstance) |
IsUserCode() |
确定模块是否被视为用户代码。 位置约束:可以从 IDE 组件调用此方法。 从 Visual Studio 2013 Update 2 开始,还可以从托管代码的监视组件调用它。 从 Visual Studio 2017 Update 8 开始,API 的 CallDirection 已从“Normal”设置为“双向”,现在可以从任何组件调用,AsyncCaller 已设置为“true”,CallerLocationConstraint 在“NoMarshalling”中设置为“None”。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。 (继承自 DkmModuleInstance) |
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>) |
确定模块是否被视为用户代码。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:可以从 IDE 组件调用此方法。 从 Visual Studio 2013 Update 2 开始,还可以从托管代码的监视组件调用它。 从 Visual Studio 2017 Update 8 开始,API 的 CallDirection 已从“Normal”设置为“双向”,现在可以从任何组件调用,AsyncCaller 已设置为“true”,CallerLocationConstraint 在“NoMarshalling”中设置为“None”。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。 (继承自 DkmModuleInstance) |
OnBinaryLoaded(String) |
引发 BinaryLoaded 事件。 实现事件接收器接口的组件将收到事件通知。 通知所有组件后,控制将返回。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引入的。 (继承自 DkmModuleInstance) |
OnBinaryReloadOpportunity() |
引发 BinaryReloadOpportunity 事件。 实现事件接收器接口的组件将收到事件通知。 通知所有组件后,控制将返回。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 此 API 是在 Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) 中引入的。 (继承自 DkmModuleInstance) |
OnModuleModified() |
当模块由于 EnC 或动态发出的代码而更改时,将调用此方法。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引入的。 (继承自 DkmModuleInstance) |
OnSymbolsLoaded(DkmModule, Boolean) |
此方法由基本调试监视器调用,以响应对 IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent 的调用。 必须从事件线程或请求线程(作为重载的一部分)调用此方法。 基本调试监视器应同步切换到事件线程,暂停目标进程,并调用 OnSymbolsLoaded。 位置约束:必须从监视组件 (组件级别 < 100,000) 调用 API。 (继承自 DkmModuleInstance) |
OnSymbolsUpdated(DkmModule) |
引发 ModuleSymbolsUpdated 事件。 实现事件接收器接口的组件将收到事件通知。 通知所有组件后,控制将返回。 (继承自 DkmModuleInstance) |
ReadSymbols() |
此方法由符号处理程序调用,以读取其符号驻留在调试对象的内存中的 DkmModuleInstances 的符号。 (继承自 DkmModuleInstance) |
RemoveDataItem<T>() |
从此容器中删除“T”的实例。 通常不需要调用此方法,因为数据容器将在对象关闭时自动清空。 (继承自 DkmDataContainer) |
SetDataItem<T>(DkmDataCreationDisposition, T) |
将新项放在数据容器中。 (继承自 DkmDataContainer) |
SetDisabled(Boolean) |
汇报模块的禁用状态。 只能从 ModuleInstanceLoad 事件调用此方法。 禁用模块时,通常还会取消模块加载事件。 (继承自 DkmModuleInstance) |
SetModule(DkmModule, Boolean) |
此方法由符号提供程序调用,以将 DkmModule 与 DkmModuleInstance 相关联,并触发 ModuleSymbolsLoaded 事件。 对于 DkmModuleInstance 对象,它只能调用一次。 调用此 API 将建立 DkmModule-DkmModuleInstance<> 关联,并引发 ModuleSymbolsLoaded 事件。 (继承自 DkmModuleInstance) |
TryLoadBinary() |
尝试加载以前无法使用更新的符号路径加载的二进制文件。 (继承自 DkmModuleInstance) |
TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>) |
尝试加载以前无法使用更新的符号路径加载的二进制文件。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 (继承自 DkmModuleInstance) |
TryLoadSymbols() |
调用以启动 DkmModuleInstances 的符号加载,该 DkmModuleInstances 在模块加载时找不到其符号。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 (继承自 DkmModuleInstance) |
TryLoadSymbols(DkmSymbolLoadFlags) |
调用 以启动 DkmModuleInstances 的符号加载,这些符号在模块加载时找不到。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引入的。 (继承自 DkmModuleInstance) |
TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
调用以启动 DkmModuleInstances 的符号加载,该 DkmModuleInstances 在模块加载时找不到其符号。 此方法会将新工作项追加到指定工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 (继承自 DkmModuleInstance) |
TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
调用 以启动 DkmModuleInstances 的符号加载,这些符号在模块加载时找不到。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:必须从 IDE 组件 (组件级别 > 100,000) 调用 API。 此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引入的。 (继承自 DkmModuleInstance) |
TryLoadSymbolsCallback() |
调用 以启动 DkmModuleInstances 的符号加载,这些符号在模块加载时找不到。 位置约束:可以从客户端或服务器调用。 此的服务器实现是一个缓存,以防止不必要的网络调用。 客户端直接转到“real”实现,这还可确保重新尝试提前返回。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引入的。 (继承自 DkmModuleInstance) |
TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>) |
调用 以启动 DkmModuleInstances 的符号加载,这些符号在模块加载时找不到。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:可以从客户端或服务器调用。 此的服务器实现是一个缓存,以防止不必要的网络调用。 客户端直接转到“real”实现,这还可确保重新尝试提前返回。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引入的。 (继承自 DkmModuleInstance) |
TryLoadSymbolsCallback177(DkmSymbolLoadFlags) |
调用 以启动加载在模块加载时找不到其符号的 DkmModuleInstances 的本地现有符号。 位置约束:可以从客户端或服务器调用。 此的服务器实现是一个缓存,以防止不必要的网络调用。 客户端直接转到“real”实现,这还可确保重新尝试提前返回。 此 API 是在 Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7) 中引入的。 (继承自 DkmModuleInstance) |
TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>) |
调用 以启动加载在模块加载时找不到其符号的 DkmModuleInstances 的本地现有符号。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回 。 工作项的实际处理是异步的。 将通过完成例程通知调用方请求已完成。 位置约束:可以从客户端或服务器调用。 此的服务器实现是一个缓存,以防止不必要的网络调用。 客户端直接转到“real”实现,这还可确保重新尝试提前返回。 此 API 是在 Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7) 中引入的。 (继承自 DkmModuleInstance) |
Unload() |
将 Unload 对象标记为已卸载,并通知实现事件接收器接口的组件。 一旦通知所有组件,控件将返回。 此方法只能由创建 对象的组件调用。 (继承自 DkmModuleInstance) |