Прочитать на английском

Поделиться через


ExtExtension

Класс ExtExtension является базовым классом для класса C++, который представляет библиотеку расширений EngExtCpp.

Класс ExtExtension включает следующие методы, которые могут использоваться подклассом:

Initialize

Неинициализировать

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

Предупредить

Err

Команда

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

Класс ExtExtension также содержит следующие поля, которые могут использоваться подклассом:

C++
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
Основной номер версии библиотеки расширений. Это значение должно быть задано методом Initialize . Если значение не задано, по умолчанию используется значение 1.

m_ExtMinorVersion
Дополнительный номер версии библиотеки расширений. Это значение должно быть задано методом Initialize . Если он не задан, по умолчанию используется значение 0 (ноль).

m_ExtInitFlags
Флаги инициализации расширения DbgEng для DebugExtensionInitialize.

m_KnownStructs
Массив структур ExtKnownStruct , которые библиотека расширений может форматировать для выходных данных. Этот элемент должен быть задан методом Initialize и не должен изменяться после возврата этим методом.

Если m_KnownStructs не имеет значение NULL, элемент TypeName последней структуры ExtKnownStruct в массиве должен иметь значение NULL.

При форматировании структуры целевого объекта для выходных данных, если имя типа структуры соответствует элементу TypeName одной из структур ExtKnownStruct в этом массиве, вызывается функция обратного вызова, указанная в элементе Method , для выполнения форматирования.

m_ProvidedValues
Массив структур ExtProvidedValue со списком псевдорегистраций, для которые библиотека расширений может предоставлять значения. Этот элемент должен быть задан методом Initialize и не должен изменяться после возврата этим методом.

Если m_ProvidedValues не равно NULL, элемент ValueName последней структуры ExtProvidedValue в массиве должен иметь значение NULL.

При оценке псевдорегистраля, если имя псевдорегистрала совпадает с элементом ValueName одной из структур ExtProvidedValue в этом массиве, функция обратного вызова, указанная в элементе Method , вызывается для оценки псевдорегистрала.

m_Advanced
Указатель интерфейса IDebugAdvanced для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Client
Указатель интерфейса IDebugClient для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Control
Указатель интерфейса IDebugControl для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Data
Указатель интерфейса IDebugDataSpaces для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Registers
Указатель интерфейса IDebugRegisters для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Symbols
Указатель интерфейса IDebugSymbols для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_System
Указатель интерфейса IDebugSystemObjects для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod.

m_Advanced2
Указатель интерфейса IDebugAdvanced2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Advanced3
Указатель интерфейса IDebugAdvanced3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Client2
Указатель интерфейса IDebugClient2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Client3
Указатель интерфейса IDebugClient3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Client4
Указатель интерфейса IDebugClient4 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Client5
Указатель интерфейса IDebugClient5 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Control2
Указатель интерфейса IDebugControl2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Control3
Указатель интерфейса IDebugControl3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Control4
Указатель интерфейса IDebugControl4 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Data2
Указатель интерфейса IDebugDataSpaces2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Data3
Указатель интерфейса IDebugDataSpaces3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Data4
Указатель интерфейса IDebugDataSpaces4 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Registers2
Указатель интерфейса IDebugRegisters2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Symbols2
Указатель интерфейса IDebugSymbols2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_Symbols3
Указатель интерфейса IDebugSymbols3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_System2
Указатель интерфейса IDebugSystemObjects2 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_System3
Указатель интерфейса IDebugSystemObjects3 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_System4
Указатель интерфейса IDebugSystemObjects4 для клиентского объекта, который может использоваться библиотекой расширений. Он действителен при вызове методов расширения, вызываемых извне, например при выполнении команды расширения, вызове ExtKnownStructMethod и ExtProvideValueMethod. Этот интерфейс может быть доступен не во всех версиях подсистемы отладчика.

m_PtrSize
Размер указателя на текущем целевом объекте. Если целевой объект использует 32-разрядные указатели, m_PtrSize равно 4. Если целевой объект использует 64-разрядные указатели, m_PtrSize равно 8.

m_AppendBuffer
Буфер символов, используемый для возврата строк из библиотеки расширений в подсистему. Размер этого буфера m_AppendBufferChars. Методы AppendBufferString, AppendStringVa и AppendString можно использовать для записи строк в этот буфер.

m_AppendBufferChars
Размер буферного m_AppendBuffer (в символах).