Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
IsUserMode
IsKernelMode
IsLiveLocalUser
IsMachine32
IsCurMachine32
IsMachine64
IsCurMachine64
Is32On64
CanQueryVirtual
HasFullMemBasic
IsExtensionRemote
AreOutputCallbacksDmlAware
RequireUserMode
RequireKernelMode
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.