Client Objects and the Engine
An EngExtCpp extension interacts with the debugger engine through a client object. Interface pointers to the client object are available to the extension through members of the ExtExtension base class. The following members provide access to the first version of the engine API interfaces.
Engine API interface | ExtExtension member |
---|---|
m_Advanced |
|
m_Client |
|
m_Control |
|
m_Data |
|
m_Registers |
|
m_Symbols |
|
m_System |
The following members provide access to later versions of the engine API interfaces. These interfaces may not be available in all versions of the debugger engine. If they are not available, any attempt to use them will result in an exception being thrown.
Engine API interface | ExtExtension member |
---|---|
IDebugAdvanced2 |
m_Advanced2 |
IDebugAdvanced3 |
m_Advanced3 |
IDebugClient2 |
m_Client2 |
IDebugClient3 |
m_Client3 |
IDebugClient4 |
m_Client4 |
IDebugClient5 |
m_Client5 |
IDebugControl2 |
m_Control2 |
IDebugControl3 |
m_Control3 |
IDebugControl4 |
m_Control4 |
IDebugData2 |
m_Data2 |
IDebugData3 |
m_Data3 |
IDebugData4 |
m_Data4 |
IDebugRegisters2 |
m_Registers2 |
IDebugSymbols2 |
m_Symbols2 |
IDebugSymbols3 |
m_Symbols3 |
IDebugSystemObjects2 |
m_System2 |
IDebugSystemObjects3 |
m_System3 |
IDebugSystemObjects4 |
m_System4 |
The members in these tables are initialized each time the extension library is used to execute an extension command or format a structure for output. Once a task is completed, these members are uninitialized. Consequently, extensions should not cache the values of these members and should use the ExtExtension members directly.
An extension library can also create its own client objects using the method IDebugClient::CreateClient or the functions DebugCreate or DebugConnect.
For an overview of client objects, see Client Objects.