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]注意自我:如果给定标记尚未固定其数据类型,此方法设置并修复标记的数据类型。 如果 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