ExtExtension
The ExtExtension class is the base class for the C++ class that represents the EngExtCpp extension library.
The ExtExtension class includes the following methods, which can be used by the subclass:
IsUserMode
IsKernelMode
IsLiveLocalUser
IsMachine32
IsCurMachine32
IsMachine64
IsCurMachine64
Is32On64
CanQueryVirtual
HasFullMemBasic
IsExtensionRemote
AreOutputCallbacksDmlAware
RequireUserMode
RequireKernelMode
GetRawArgCopy
Out
Warn
Err
Verb
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
The ExtExtension class also contains the following fields that can be used by the subclass:
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
The major version number of the extension library. This should be set by the Initialize method. If it is not set, it defaults to 1.
m_ExtMinorVersion
The minor version number of the extension library. This should be set by the Initialize method. If it is not set, it defaults to 0 (zero).
m_ExtInitFlags
The DbgEng extension initialization flags for DebugExtensionInitialize.
m_KnownStructs
An array of ExtKnownStruct structures that the extension library is capable of formatting for output. This member should be set by the Initialize method and should not be changed once this method returns.
If m_KnownStructs is not NULL, the TypeName member of the last ExtKnownStruct structure in the array must be NULL.
When formatting a target's structure for output, if the name of the structure's type matches the TypeName member of one of the ExtKnownStruct structures in this array, the callback function specified in the Method member is called to perform the formatting.
m_ProvidedValues
An array of ExtProvidedValue structures listing the pseudo registers that the extension library can provide values for. This member should be set by the Initialize method and should not be changed once this method returns.
If m_ProvidedValues is not NULL, the ValueName member of the last ExtProvidedValue structure in the array must be NULL.
When evaluating a pseudo register, if the name of the pseudo register matches the ValueName member of one of the ExtProvidedValue structures in this array, the callback function specified in the Method member is called to evaluate the pseudo register.
m_Advanced
The IDebugAdvanced interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Client
The IDebugClient interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Control
The IDebugControl interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Data
The IDebugDataSpaces interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Registers
The IDebugRegisters interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Symbols
The IDebugSymbols interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_System
The IDebugSystemObjects interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod.
m_Advanced2
The IDebugAdvanced2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Advanced3
The IDebugAdvanced3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Client2
The IDebugClient2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Client3
The IDebugClient3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Client4
The IDebugClient4 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Client5
The IDebugClient5 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Control2
The IDebugControl2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Control3
The IDebugControl3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Control4
The IDebugControl4 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Data2
The IDebugDataSpaces2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Data3
The IDebugDataSpaces3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Data4
The IDebugDataSpaces4 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Registers2
The IDebugRegisters2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Symbols2
The IDebugSymbols2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_Symbols3
The IDebugSymbols3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_System2
The IDebugSystemObjects2 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_System3
The IDebugSystemObjects3 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_System4
The IDebugSystemObjects4 interface pointer for the client object that can be used by the extension library. It is valid during the invocation of externally-called extension methods-for example, the execution of an extension command, a call to ExtKnownStructMethod and ExtProvideValueMethod. This interface might not be available in all versions of the debugger engine.
m_PtrSize
The size of a pointer on the current target. If the target uses 32-bit pointers, m_PtrSize is 4. If the target uses 64-bit pointers, m_PtrSize is 8.
m_AppendBuffer
A character buffer used to return strings from the extension library to the engine. The size of this buffer is m_AppendBufferChars. The methods AppendBufferString, AppendStringVa, and AppendString can be used to write strings to this buffer.
m_AppendBufferChars
The size, in characters, of the buffer m_AppendBuffer.