IDebugEngine2::Attach
Присоединяет подсистему отладки (DE) к программе или программам. Вызывается диспетчером отладки сеансов (SDM), когда de выполняется в процессе для SDM.
Синтаксис
int Attach(
IDebugProgram2[] pProgram,
IDebugProgramNode2[] rgpProgramNodes,
uint celtPrograms,
IDebugEventCallback2 pCallback,
Enum_ATTACH_REASON dwReason
);
Параметры
pProgram
[in] Массив объектов IDebugProgram2 , представляющих программы для присоединения. Это программы портов.
rgpProgramNodes
[in] Массив объектов IDebugProgramNode2 , представляющих узлы программы, по одному для каждой программы. Узлы программы в этом массиве представляют те же программы, что и в pProgram
. Узлы программы предоставляются таким образом, чтобы деидентифицировать программы для подключения.
celtPrograms
[in] Количество узлов pProgram
программ и (или) в массивах.rgpProgramNodes
pCallback
[in] Объект IDebugEventCallback2 , используемый для отправки событий отладки в SDM.
dwReason
[in] Значение из перечисления ATTACH_REASON , указывающее причину присоединения этих программ. Дополнительные сведения см. в разделе с примечаниями.
Возвращаемое значение
В случае успешного выполнения возвращается S_OK
; в противном случае возвращается код ошибки.
Замечания
Существует три причины присоединения к программе, как показано ниже.
ATTACH_REASON_LAUNCH
указывает, что DE подключается к программе, так как пользователь запустил процесс, содержащий его.ATTACH_REASON_USER
указывает, что пользователь явно запросил DE присоединиться к программе (или процесс, содержащий программу).ATTACH_REASON_AUTO
указывает, что DE подключается к определенной программе, так как она уже выполняет отладку других программ в определенном процессе. Это также называется автоматическим подключением.При вызове этого метода DE необходимо отправить эти события в последовательности:
IDebugEngineCreateEvent2 (если он еще не отправлен для определенного экземпляра обработчика отладки)
-
Кроме того, если причина присоединения является
ATTACH_REASON_LAUNCH
, DE необходимо отправить событие IDebugEntryPointEvent2 .После получения объекта IDebugProgramNode2 , соответствующего отлаживаемой программе, его можно запросить для любого частного интерфейса.
Перед вызовом методов узла программы в массиве, заданного
pProgram
илиrgpProgramNodes
олицетворения, при необходимости, следует включить вIDebugProgram2
интерфейсе, представляющем узел программы. Однако обычно этот шаг не требуется. Дополнительные сведения см. в разделе "Проблемы безопасности".