ExtExtension

La classe ExtExtension est la classe de base de la classe C++ qui représente la bibliothèque d’extensions EngExtCpp.

La classe ExtExtension comprend les méthodes suivantes, qui peuvent être utilisées par la sous-classe :

Initialiser

Annuler l’initialisation

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

SetUnnamedArgStrStr

SetUnnamedArgU64

SetArg

SetArgStr

SetArgU64

GetRawArgStr

GetRawArgCopy

Out

Avertir

Err

Verb

Dml

DmlWarn

DmlErr

DmlVerb

DmlCmdLink

DmlCmdExec

RefreshOutputCallbackFlags

WrapLine

OutWrapStr

OutWrapVa

OutWrap

DemandeWrap

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 contient également les champs suivants qui peuvent être utilisés par la sous-classe :

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

Membres

m_ExtMajorVersion
Numéro de version principal de la bibliothèque d’extensions. Cela doit être défini par la méthode Initialize . S’il n’est pas défini, la valeur par défaut est 1.

m_ExtMinorVersion
Numéro de version secondaire de la bibliothèque d’extensions. Cela doit être défini par la méthode Initialize . S’il n’est pas défini, la valeur par défaut est 0 (zéro).

m_ExtInitFlags
Indicateurs d’initialisation de l’extension DbgEng pour DebugExtensionInitialize.

m_KnownStructs
Tableau de structures ExtKnownStruct que la bibliothèque d’extensions est capable de mettre en forme pour la sortie. Ce membre doit être défini par la méthode Initialize et ne doit pas être modifié une fois que cette méthode est retournée.

Si m_KnownStructs n’a pas la valeur NULL, le membre TypeName de la dernière structure ExtKnownStruct du tableau doit avoir la valeur NULL.

Lors de la mise en forme de la structure d’une cible pour la sortie, si le nom du type de la structure correspond au membre TypeName de l’une des structures ExtKnownStruct de ce tableau, la fonction de rappel spécifiée dans le membre Method est appelée pour effectuer la mise en forme.

m_ProvidedValues
Tableau de structures ExtProvidedValue répertoriant les pseudo-registres que la bibliothèque d’extensions peut fournir des valeurs. Ce membre doit être défini par la méthode Initialize et ne doit pas être modifié une fois que cette méthode est retournée.

Si m_ProvidedValues n’a pas la valeur NULL, le membre ValueName de la dernière structure ExtProvidedValue du tableau doit avoir la valeur NULL.

Lors de l’évaluation d’un pseudo-registre, si le nom du pseudo-registre correspond au membre ValueName de l’une des structures ExtProvidedValue de ce tableau, la fonction de rappel spécifiée dans le membre method est appelée pour évaluer le pseudo registre.

m_Advanced
Pointeur d’interface IDebugAdvanced pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Client
Pointeur d’interface IDebugClient pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Control
Pointeur d’interface IDebugControl pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Data
Pointeur d’interface IDebugDataSpaces pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Registers
Pointeur d’interface IDebugRegisters pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Symbols
Pointeur d’interface IDebugSymbols pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_System
Pointeur d’interface IDebugSystemObjects pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod.

m_Advanced2
Pointeur d’interface IDebugAdvanced2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Advanced3
Pointeur d’interface IDebugAdvanced3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Client2
Pointeur d’interface IDebugClient2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Client3
Pointeur d’interface IDebugClient3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Client4
Pointeur d’interface IDebugClient4 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Client5
Pointeur d’interface IDebugClient5 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Control2
Pointeur d’interface IDebugControl2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Control3
Pointeur d’interface IDebugControl3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Control4
Pointeur d’interface IDebugControl4 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Data2
Pointeur d’interface IDebugDataSpaces2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Data3
Pointeur d’interface IDebugDataSpaces3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Data4
Pointeur d’interface IDebugDataSpaces4 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Registers2
Pointeur d’interface IDebugRegisters2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Symbols2
Pointeur d’interface IDebugSymbols2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_Symbols3
Pointeur d’interface IDebugSymbols3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_System2
Pointeur d’interface IDebugSystemObjects2 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_System3
Pointeur d’interface IDebugSystemObjects3 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_System4
Pointeur d’interface IDebugSystemObjects4 pour l’objet client qui peut être utilisé par la bibliothèque d’extensions. Elle est valide lors de l’appel de méthodes d’extension externes, par exemple, l’exécution d’une commande d’extension, un appel à ExtKnownStructMethod et ExtProvideValueMethod. Cette interface n’est peut-être pas disponible dans toutes les versions du moteur du débogueur.

m_PtrSize
Taille d’un pointeur sur la cible actuelle. Si la cible utilise des pointeurs 32 bits, m_PtrSize est 4. Si la cible utilise des pointeurs 64 bits, m_PtrSize est 8.

m_AppendBuffer
Mémoire tampon de caractères utilisée pour renvoyer des chaînes de la bibliothèque d’extensions au moteur. La taille de cette mémoire tampon est m_AppendBufferChars. Les méthodes AppendBufferString, AppendStringVa et AppendString peuvent être utilisées pour écrire des chaînes dans cette mémoire tampon.

m_AppendBufferChars
Taille, en caractères, de la mémoire tampon m_AppendBuffer.