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:

Initialize

Uninitialize

OnSessionActive

OnSessionInactive

OnSessionAccessible

OnSessionInaccessible

IsUserMode

IsKernelMode

IsLiveLocalUser

IsMachine32

IsCurMachine32

IsMachine64

IsCurMachine64

Is32On64

CanQueryVirtual

HasFullMemBasic

IsExtensionRemote

AreOutputCallbacksDmlAware

RequireUserMode

RequireKernelMode

GetNumUnnamedArgs

GetUnnamedArgStr

GetUnnamedArgU64

HasUnnamedArg

GetArgStr

GetArgU64

HasArg

HasCharArg

SetUnnamedArg

SetUnnamedArgStr

SetUnnamedArgU64

SetArg

SetArgStr

SetArgU64

GetRawArgStr

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;
};



Members

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.

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft