IDebugFailureAnalysis2::AddExtensionCommand 方法 (extsfns.h)

AddExtensionCommand 方法向 DebugFailureAnalysis 对象添加了新的 FA 条目,并将 FA 条目的数据块设置为指定的调试器命令。

语法

PFA_ENTRY AddExtensionCommand(
       FA_TAG Tag,
  [in] PCSTR  Extension
);

参数

Tag

FA_TAG 枚举中的值。 与此标记关联的数据类型必须 DEBUG_FA_ENTRY_EXTENSION_CMDDEBUG_FA_ENTRY_ANSI_STRING

[in] Extension

指向调试器命令的以 null 结尾的 ANSI 字符串的指针。 调试器命令的示例是“!analyze -v”。

返回值

如果此方法成功,它将返回指向新 FA_ENTRY 结构的指针。 如果此方法失败,它将返回 NULL

言论

此方法将新 FA_ENTRY 结构的 DataSize 成员设置为扩展命令的长度(以字节为单位)包括 NULL 终止符。

每个标记都与 FA_ENTRY_TYPE 枚举中的其中一种数据类型相关联。 若要确定与标记关联的数据类型,请调用 IDebugFAEntryTags 接口的 GetType 方法。

若要获取指向 IDebugFAEntryTags 接口的指针,请调用 IDebugFailureAnalysis2 接口的 GetDebugFATagControl 方法。

[sperry]注意 Self:如果给定标记尚未修复其数据类型,则此方法设置并修复标记的数据类型。 如果 DebugFailureAnalysis 对象尚未具有具有此标记的 FA 条目,则情况就是这样。 但是,如果 DebugFailureAnalysis 对象已有具有此标记的 FA 条目,则标记的数据类型是固定的。 此方法创建具有相同标记的新 FA 条目。 现在,如果尝试写入新数据缓冲区的数据类型与已为此标记修复的数据类型不匹配,该怎么办。 然后,我们会看到是否可以从固定数据类型强制转换为要写入的类型。

在ULONG64、POINTER 和 InstructionOffset 之间转换是可以的。 在 String 和 ExtensionCommand 之间转换是可以的。 ULONG 只能是 ULONG。 STRING 只能是 STRING。

问:标记的数据类型何时得到修复? 创建具有该标记的第一个 FA 条目时,该条目是吗?

typedef struct _FA_TAG_PROPS
{
    FA_TAG Tag;
    FA_ENTRY_TYPE Type;
    ULONG Fixed:1;
    ULONG NameAllocated:1;
    ULONG DescriptionAllocated:1;
    PCSTR Name;
    PCSTR Description;
    AnalysisPlugIn *Plugin;
} FA_TAG_PROPS, *PFA_TAG_PROPS;

要求

要求 价值
目标平台 桌面
标头 extsfns.h

另请参阅

IDebugFAEntryTags

IDebugFailureAnalysis2

SetExtensionCommand

编写分析扩展插件以扩展 !analyze

_EFN_Analyze