ExtExtension

La classe ExtExtension è la classe di base per la classe C++ che rappresenta la libreria di estensione EngExtCpp.

La classe ExtExtension include i metodi seguenti, che possono essere usati dalla sottoclasse:

Initialize

Inizializza

OnSessionActive

OnSessionInactive

OnSessionAccess

OnSessionInaccessibile

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

Cambio

Avvertire

Err

Verbo

Dml

DmlWarn

DmlErr

DmlVerb

DmlCmdLink

DmlCmdExec

RefreshOutputCallbackFlags

WrappingLine

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

La classe ExtExtension contiene anche i campi seguenti che possono essere usati dalla sottoclasse:

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

Membri

m_ExtMajorVersion
Numero di versione principale della libreria di estensioni. Questa operazione deve essere impostata dal metodo Initialize . Se non è impostato, il valore predefinito è 1.

m_ExtMinorVersion
Numero di versione secondaria della libreria di estensioni. Questa operazione deve essere impostata dal metodo Initialize . Se non è impostato, il valore predefinito è 0 (zero).

m_ExtInitFlags
Flag di inizializzazione dell'estensione DbgEng per DebugExtensionInitialize.

m_KnownStructs
Matrice di strutture ExtKnownStruct che la libreria di estensioni è in grado di formattare per l'output. Questo membro deve essere impostato dal metodo Initialize e non deve essere modificato una volta restituito questo metodo.

Se m_KnownStructs non è NULL, il membro TypeName dell'ultima struttura ExtKnownStruct nella matrice deve essere NULL.

Quando si formatta la struttura di una destinazione per l'output, se il nome del tipo della struttura corrisponde al membro TypeName di una delle strutture ExtKnownStruct in questa matrice, viene chiamata la funzione di callback specificata nel membro Metodo per eseguire la formattazione.

m_ProvidedValues
Matrice di strutture ExtProvidedValue che elencano i registri pseudo per cui la libreria di estensioni può fornire valori. Questo membro deve essere impostato dal metodo Initialize e non deve essere modificato una volta restituito questo metodo.

Se m_ProvidedValues non è NULL, il membro ValueName dell'ultima struttura ExtProvidedValue nella matrice deve essere NULL.

Quando si valuta un registro pseudo, se il nome del registro pseudo corrisponde al membro ValueName di una delle strutture ExtProvidedValue in questa matrice, la funzione di callback specificata nel membro Metodo viene chiamata per valutare il registro pseudo.

m_Advanced
Puntatore dell'interfaccia IDebugAdvanced per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Client
Puntatore dell'interfaccia IDebugClient per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Control
Puntatore dell'interfaccia IDebugControl per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Data
Puntatore dell'interfaccia IDebugDataSpaces per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Registers
Puntatore dell'interfaccia IDebugRegisters per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Symbols
Puntatore dell'interfaccia IDebugSymbols per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_System
Puntatore dell'interfaccia IDebugSystemObjects per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod.

m_Advanced2
Puntatore dell'interfaccia IDebugAdvanced2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Advanced3
Puntatore dell'interfaccia IDebugAdvanced3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Client2
Puntatore dell'interfaccia IDebugClient2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Client3
Puntatore dell'interfaccia IDebugClient3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Client4
Puntatore dell'interfaccia IDebugClient4 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Client5
Puntatore dell'interfaccia IDebugClient5 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Control2
Puntatore dell'interfaccia IDebugControl2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Control3
Puntatore dell'interfaccia IDebugControl3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Control4
Puntatore dell'interfaccia IDebugControl4 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Data2
Puntatore dell'interfaccia IDebugDataSpaces2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Data3
Puntatore dell'interfaccia IDebugDataSpaces3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Data4
Puntatore dell'interfaccia IDebugDataSpaces4 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Registers2
Puntatore dell'interfaccia IDebugRegisters2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Symbols2
Puntatore dell'interfaccia IDebugSymbols2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_Symbols3
Puntatore dell'interfaccia IDebugSymbols3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_System2
Puntatore dell'interfaccia IDebugSystemObjects2 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_System3
Puntatore dell'interfaccia IDebugSystemObjects3 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_System4
Puntatore dell'interfaccia IDebugSystemObjects4 per l'oggetto client che può essere usato dalla libreria di estensioni. È valida durante la chiamata di metodi di estensione denominati esternamente, ad esempio l'esecuzione di un comando di estensione, una chiamata a ExtKnownStructMethod e ExtProvideValueMethod. Questa interfaccia potrebbe non essere disponibile in tutte le versioni del motore del debugger.

m_PtrSize
Dimensioni di un puntatore nella destinazione corrente. Se la destinazione usa puntatori a 32 bit, m_PtrSize è 4. Se la destinazione usa puntatori a 64 bit, m_PtrSize è 8.

m_AppendBuffer
Buffer di caratteri usato per restituire stringhe dalla libreria di estensioni al motore. Le dimensioni di questo buffer sono m_AppendBufferChars. I metodi AppendBufferString, AppendStringVa e AppendString possono essere usati per scrivere stringhe nel buffer.

m_AppendBufferChars
Dimensioni, in caratteri, del buffer m_AppendBuffer.