ExtExtension
ExtExtension 类是表示 EngExtCpp 扩展库的 C++ 类的基类。
ExtExtension 类包含以下方法,子类可以使用这些方法:
IsUserMode
IsKernelMode
IsLiveLocalUser
IsMachine32
IsCurMachine32
IsMachine64
IsCurMachine64
Is32On64
CanQueryVirtual
HasFullMemBasic
IsExtensionRemote
AreOutputCallbacksDmlAware
RequireUserMode
RequireKernelMode
GetRawArgCopy
Out
警告
犯 错
谓词
Dml
DmlWarn
DmlErr
DmlVerb
DmlCmdLink
DmlCmdExec
RefreshOutputCallbackFlags
WrapLine
OutWrapStr
OutWrapVa
OutWrap
DemandWrap
AllowWrap
TestWrap
RequestCircleString
CopyCircleString
PrintCircleStringVa
PrintCircleString
SetAppendBuffer
AppendBufferString
AppendStringVa
AppendString
IsAppendStart
SetCallStatus
GetCachedSymbolTypeId
GetCachedFieldOffset
GetCachedFieldOffset
AddCachedSymbolInfo
GetExpr64
GetExprU64
GetExprS64
ThrowCommandHelp
ThrowInterrupt
ThrowOutOfMemory
ThrowContinueSearch
ThrowReloadExtension
ThrowInvalidArg
ThrowRemote
ThrowStatus
ThrowLastError
ExtExtension 类还包含以下子类可以使用的字段:
class ExtExtension
{
public:
USHORT m_ExtMajorVersion;
USHORT m_ExtMinorVersion;
ULONG m_ExtInitFlags;
ExtKnownStruct * m_KnownStructs;
ExtProvidedValue * m_ProvidedValues;
ExtCheckedPointer<IDebugAdvanced> m_Advanced;
ExtCheckedPointer<IDebugClient> m_Client;
ExtCheckedPointer<IDebugControl> m_Control;
ExtCheckedPointer<IDebugDataSpaces> m_Data;
ExtCheckedPointer<IDebugRegisters> m_Registers;
ExtCheckedPointer<IDebugSymbols> m_Symbols;
ExtCheckedPointer<IDebugSystemObjects> m_System;
ExtCheckedPointer<IDebugAdvanced2> m_Advanced2;
ExtCheckedPointer<IDebugAdvanced3> m_Advanced3;
ExtCheckedPointer<IDebugClient2> m_Client2;
ExtCheckedPointer<IDebugClient3> m_Client3;
ExtCheckedPointer<IDebugClient4> m_Client4;
ExtCheckedPointer<IDebugClient5> m_Client5;
ExtCheckedPointer<IDebugControl2> m_Control2;
ExtCheckedPointer<IDebugControl3> m_Control3;
ExtCheckedPointer<IDebugControl4> m_Control4;
ExtCheckedPointer<IDebugDataSpaces2> m_Data2;
ExtCheckedPointer<IDebugDataSpaces3> m_Data3;
ExtCheckedPointer<IDebugDataSpaces4> m_Data4;
ExtCheckedPointer<IDebugRegisters2> m_Registers2;
ExtCheckedPointer<IDebugSymbols2> m_Symbols2;
ExtCheckedPointer<IDebugSymbols3> m_Symbols3;
ExtCheckedPointer<IDebugSystemObjects2> m_System2;
ExtCheckedPointer<IDebugSystemObjects3> m_System3;
ExtCheckedPointer<IDebugSystemObjects4> m_System4;
ULONG m_OutputWidth;
ULONG m_ActualMachine;
ULONG m_Machine;
ULONG m_PageSize;
ULONG m_PtrSize;
ULONG m_NumProcessors;
ULONG64 m_OffsetMask;
ULONG m_DebuggeeClass;
ULONG m_DebuggeeQual;
ULONG m_DumpFormatFlags;
bool m_IsRemote;
bool m_OutCallbacksDmlAware;
ULONG m_OutMask;
ULONG m_CurChar;
ULONG m_LeftIndent;
bool m_AllowWrap;
bool m_TestWrap;
ULONG m_TestWrapChars;
PSTR m_AppendBuffer;
ULONG m_AppendBufferChars;
PSTR m_AppendAt;
};
成员
m_ExtMajorVersion
扩展库的主版本号。 这应由 Initialize 方法设置。 如果未设置,则默认为 1。
m_ExtMinorVersion
扩展库的次要版本号。 这应由 Initialize 方法设置。 如果未设置,则默认为 0 (零) 。
m_ExtInitFlags
DebugExtensionInitialize 的 DbgEng 扩展初始化标志。
m_KnownStructs
扩展库能够格式化输出的 ExtKnownStruct 结构的数组。 此成员应由 Initialize 方法设置,并且不应在此方法返回后进行更改。
如果m_KnownStructs不为 NULL,则数组中最后一个 ExtKnownStruct 结构的 TypeName 成员必须为 NULL。
为输出设置目标结构的格式时,如果结构类型的名称与此数组中 ExtKnownStruct 结构之一的 TypeName 成员匹配,则会调用 Method 成员中指定的回调函数来执行格式设置。
m_ProvidedValues
ExtProvidedValue 结构的数组,其中列出了扩展库可以提供值的伪寄存器。 此成员应由 Initialize 方法设置,并且不应在此方法返回后进行更改。
如果 m_ProvidedValues 不为 NULL,则数组中最后一个 ExtProvidedValue 结构的 ValueName 成员必须为 NULL。
计算伪寄存器时,如果伪寄存器的名称与此数组中某个 ExtProvidedValue 结构的 ValueName 成员匹配,则调用 Method 成员中指定的回调函数来计算伪寄存器。
m_Advanced
扩展库可以使用的客户端对象的 IDebugAdvanced 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Client
扩展库可以使用的客户端对象的 IDebugClient 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Control
扩展库可以使用的客户端对象的 IDebugControl 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Data
扩展库可以使用的客户端对象的 IDebugDataSpaces 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Registers
扩展库可以使用的客户端对象的 IDebugRegisters 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Symbols
扩展库可以使用的客户端对象的 IDebugSymbols 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_System
扩展库可以使用的客户端对象的 IDebugSystemObjects 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。
m_Advanced2
扩展库可以使用的客户端对象的 IDebugAdvanced2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Advanced3
扩展库可以使用的客户端对象的 IDebugAdvanced3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Client2
扩展库可以使用的客户端对象的 IDebugClient2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Client3
扩展库可以使用的客户端对象的 IDebugClient3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Client4
扩展库可以使用的客户端对象的 IDebugClient4 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Client5
扩展库可以使用的客户端对象的 IDebugClient5 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Control2
扩展库可以使用的客户端对象的 IDebugControl2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Control3
扩展库可以使用的客户端对象的 IDebugControl3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Control4
扩展库可以使用的客户端对象的 IDebugControl4 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Data2
可由扩展库使用的客户端对象的 IDebugDataSpaces2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Data3
扩展库可以使用的客户端对象的 IDebugDataSpaces3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Data4
扩展库可以使用的客户端对象的 IDebugDataSpaces4 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Registers2
可由扩展库使用的客户端对象的 IDebugRegisters2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Symbols2
扩展库可以使用的客户端对象的 IDebugSymbols2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_Symbols3
扩展库可以使用的客户端对象的 IDebugSymbols3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_System2
扩展库可以使用的客户端对象的 IDebugSystemObjects2 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_System3
扩展库可以使用的客户端对象的 IDebugSystemObjects3 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_System4
扩展库可以使用的客户端对象的 IDebugSystemObjects4 接口指针。 它在调用外部调用的扩展方法期间有效,例如,执行扩展命令、调用 ExtKnownStructMethod 和 ExtProvideValueMethod。 此接口可能并非在所有版本的调试器引擎中都可用。
m_PtrSize
当前目标上的指针的大小。 如果目标使用 32 位指针, m_PtrSize 为 4。 如果目标使用 64 位指针, m_PtrSize 为 8。
m_AppendBuffer
用于将字符串从扩展库返回到引擎的字符缓冲区。 此缓冲区的大小m_AppendBufferChars。 AppendBufferString、AppendStringVa 和 AppendString 方法可用于将字符串写入此缓冲区。
m_AppendBufferChars
缓冲区 m_AppendBuffer的大小(以字符为单位)。