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

警告

犯 錯

動詞命令

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_KnownStructs不是Null,陣列中最後一個 ExtKnownStruct結構的TypeName成員必須是Null

格式化目標的輸出結構時,如果結構類型的名稱符合此陣列中其中一個ExtKnownStruct結構的TypeName成員,則會呼叫Method成員中指定的回呼函式來執行格式設定。

m_ProvidedValues
ExtProvidedValue結構的陣列,其中列出擴充程式庫可以提供值的虛擬暫存器。 這個成員應該由 Initialize 方法設定,而且這個方法傳回之後不應該變更。

如果m_ProvidedValues不是Null,陣列中最後一個 ExtProvidedValue結構的ValueName成員必須是Null

評估虛擬暫存器時,如果虛擬暫存器的名稱符合此陣列中其中一個ExtProvidedValue結構的ValueName成員,則會呼叫Method成員中指定的回呼函式來評估虛擬暫存器。

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_AppendBufferCharsAppendBufferStringAppendStringVaAppendString方法可用來將字串寫入此緩衝區。

m_AppendBufferChars
緩衝區的大小,以字元 為單位m_AppendBuffer