IDebugControl3::OutputDisassemblyLines 方法 (dbgeng.h)

OutputDisassemblyLines 方法反汇编多个处理器指令,并将生成的程序集指令发送到输出回调

语法

HRESULT OutputDisassemblyLines(
  [in]            ULONG    OutputControl,
  [in]            ULONG    PreviousLines,
  [in]            ULONG    TotalLines,
  [in]            ULONG64  Offset,
  [in]            ULONG    Flags,
  [out, optional] PULONG   OffsetLine,
  [out, optional] PULONG64 StartOffset,
  [out, optional] PULONG64 EndOffset,
  [out, optional] PULONG64 LineOffsets
);

参数

[in] OutputControl

指定用于确定哪个客户端的输出回调接收输出的输出控件。 有关可能的值,请参阅 DEBUG_OUTCTL_XXX。 有关输出的详细信息,请参阅 输入和输出

[in] PreviousLines

指定位于 Offset 处的指令之前要包含在输出中的指令行数。 通常,每个指令在单行上输出。 但是,某些指令可能会占用多行输出;这可能会导致 在 Offset 处的指令之前输出的行数大于 PreviousLines

[in] TotalLines

指定要包含在输出中的指令行总数。 通常,每个指令在单行上输出。 但是,某些指令可能会占用多行输出;这可能会导致输出的行数大于 TotalLines

[in] Offset

指定目标内存中要反汇编的指令的位置。 反汇编输出将在这些处理器指令之前启动 PreviousLines 行。

[in] Flags

指定影响此方法行为的位标志。 下表列出了可以设置的位。

Bit-Flag 设置时的效果
DEBUG_DISASM_EFFECTIVE_ADDRESS 从当前寄存器信息计算每个指令的有效地址并输出它。
DEBUG_DISASM_MATCHING_SYMBOLS 如果指令的地址具有完全匹配的符号,请输出符号。
DEBUG_DISASM_SOURCE_LINE_NUMBER 在输出中包含每个指令的源行号。
DEBUG_DISASM_SOURCE_FILE_NAME 在输出中包含源文件名称。

[out, optional] OffsetLine

接收输出中的行号,该行号包含在 Offset 处的指令。 如果 OffsetLineNULL,则不会返回此信息。

[out, optional] StartOffset

接收输出中包含的第一个指令的目标内存中的位置。 如果 StartOffsetNULL,则不会返回此信息。

[out, optional] EndOffset

接收目标内存中遵循最后一个反汇编指令的指令的 locaiton。

[out, optional] LineOffsets

Offset 处的指令开始,接收包含在输出中的指令的目标内存中的位置。 LineOffsets 是包含 TotalLines 元素的 数组。

Offset 是此数组中第一个条目的值,除非在此指令之前反汇编指令时出错。 在这种情况下,第一个条目将包含 DEBUG_ANY_ID,Offset 将放置在数组中的第二个条目中, (索引一) 。

如果指令的输出跨多行,则数组中对应于指令的第一行的元素将包含指令的地址。

如果 LineOffsetsNULL,则不会返回此信息。

返回值

此方法还可以返回错误值。 有关更多详细信息 ,请参阅返回值

返回代码 说明
S_OK
方法成功。

注解

程序集语言取决于目标系统的有效处理器类型。 有关汇编语言的信息,请参阅处理器文档。

有关在调试器应用程序中使用程序集的概述,请参阅 在程序集模式下调试。 有关将程序集与调试器引擎 API 配合使用的详细信息,请参阅 汇编和反汇编说明

要求

要求
目标平台 桌面
标头 dbgeng.h (包括 Dbgeng.h)

另请参阅

Disassemble

IDebugControl

IDebugControl2

IDebugControl3

OutputDisassembly

u(取消汇编)