Клиентские объекты и подсистема
Расширение EngExtCpp взаимодействует с обработчиком отладчика через клиентский объект. Указатели интерфейса на клиентский объект доступны для расширения через члены базового класса ExtExtension . Следующие члены предоставляют доступ к первой версии интерфейсов API ядра.
Интерфейс API ядра | Член ExtExtension |
---|---|
m_Advanced |
|
m_Client |
|
m_Control |
|
m_Data |
|
m_Registers |
|
m_Symbols |
|
m_System |
Следующие члены предоставляют доступ к более поздним версиям интерфейсов API ядра. Эти интерфейсы могут быть недоступны во всех версиях обработчика отладчика. Если они недоступны, любая попытка их использования приведет к возникновению исключения.
Интерфейс API ядра | Член ExtExtension |
---|---|
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 |
Члены в этих таблицах инициализированы каждый раз, когда библиотека расширений используется для выполнения команды расширения или форматирования структуры для выходных данных. После завершения задачи эти члены неинициализированы. Следовательно, расширения не должны кэшировать значения этих членов и использовать элементы ExtExtension напрямую.
Библиотека расширений также может создавать собственные клиентские объекты с помощью метода IDebugClient::CreateClient или функций DebugCreate или Debug Подключение.
Общие сведения о клиентских объектах см. в разделе "Клиентские объекты".