ExtExtension 클래스는 EngExtCpp 확장 라이브러리를 나타내는 C++ 클래스의 기본 클래스입니다.
ExtExtension 클래스에는 하위 클래스에서 사용할 수 있는 다음 메서드가 포함됩니다.
IsUserMode
IsKernelMode
IsLiveLocalUser
IsMachine32
IsCurMachine32
IsMachine64
IsCurMachine64
Is32On64
CanQueryVirtual
HasFullMemBasic
IsExtensionRemote
AreOutputCallbacksDmlAware
RequireUserMode
RequireKernelMode
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 인터페이스 포인터입니다. 외부 호출 확장 메서드를 호출하는 동안 유효합니다. 예를 들어 확장 명령 실행, 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 크기(문자)입니다.