ExtExtension

ExtExtension 클래스는 EngExtCpp 확장 라이브러리를 나타내는 C++ 클래스의 기본 클래스입니다.

ExtExtension 클래스에는 하위 클래스에서 사용할 수 있는 다음 메서드가 포함됩니다.

초기화

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

경고

오류

동사

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 클래스에는 하위 클래스에서 사용할 수 있는 다음 필드도 포함됩니다.

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
DebugExtensionInitialize에 대한 DbgEng 확장 초기화 플래그입니다.

m_KnownStructs
확장 라이브러리가 출력에 서식을 지정할 수 있는 ExtKnownStruct 구조체의 배열입니다. 이 멤버는 Initialize 메서드에 의해 설정되어야 하며 이 메서드가 반환되면 변경되지 않아야 합니다.

m_KnownStructsNULL이 아닌 경우 배열의 마지막 ExtKnownStruct 구조체의 TypeName 멤버는 NULL이어야 합니다.

출력을 위해 대상 구조체의 형식을 지정할 때 구조체 형식의 이름이 이 배열의 ExtKnownStruct 구조체 중 하나의 TypeName 멤버와 일치하는 경우 메서드 멤버에 지정된 콜백 함수가 호출되어 서식을 수행합니다.

m_ProvidedValues
확장 라이브러리에서 값을 제공할 수 있는 의사 레지스터를 나열하는 ExtProvidedValue 구조체의 배열입니다. 이 멤버는 Initialize 메서드에 의해 설정되어야 하며 이 메서드가 반환되면 변경되지 않아야 합니다.

m_ProvidedValuesNULL이 아닌 경우 배열의 마지막 ExtProvidedValue 구조체의 ValueName 멤버는 NULL이어야 합니다.

의사 레지스터를 평가할 때 의사 레지스터의 이름이 이 배열의 ExtProvidedValue 구조체 중 하나의 ValueName 멤버와 일치하는 경우 메서드 멤버에 지정된 콜백 함수가 호출되어 의사 레지스터를 평가합니다.

m_Advanced
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugAdvanced 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Client
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugClient 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Control
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugControl 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Data
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugDataSpaces 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Registers
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugRegisters 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Symbols
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSymbols 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_System
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSystemObjects 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다.

m_Advanced2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugAdvanced2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Advanced3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugAdvanced3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Client2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugClient2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Client3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugClient3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Client4
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugClient4 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Client5
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugClient5 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Control2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugControl2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Control3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugControl3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Control4
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugControl4 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Data2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugDataSpaces2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Data3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugDataSpaces3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Data4
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugDataSpaces4 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Registers2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugRegisters2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Symbols2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSymbols2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_Symbols3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSymbols3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_System2
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSystemObjects2 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_System3
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSystemObjects3 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없을 수 있습니다.

m_System4
확장 라이브러리에서 사용할 수 있는 클라이언트 개체에 대한 IDebugSystemObjects4 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, ExtKnownStructMethodExtProvideValueMethod에 대한 호출입니다. 이 인터페이스는 디버거 엔진의 모든 버전에서 사용할 수 없습니다.

m_PtrSize
현재 대상에 대한 포인터의 크기입니다. 대상이 32비트 포인터를 사용하는 경우 m_PtrSize 4입니다. 대상이 64비트 포인터를 사용하는 경우 m_PtrSize 8입니다.

m_AppendBuffer
확장 라이브러리에서 엔진으로 문자열을 반환하는 데 사용되는 문자 버퍼입니다. 이 버퍼의 크기는 m_AppendBufferChars. AppendBufferString, AppendStringVaAppendString 메서드를 사용하여 이 버퍼에 문자열을 쓸 수 있습니다.

m_AppendBufferChars
버퍼 m_AppendBuffer 크기(문자)입니다.