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 необходимо отправить эти события в последовательности:

  1. IDebugEngineCreateEvent2 (если он еще не отправлен для определенного экземпляра обработчика отладки)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    Кроме того, если причина присоединения является ATTACH_REASON_LAUNCH, DE необходимо отправить событие IDebugEntryPointEvent2 .

    После получения объекта IDebugProgramNode2 , соответствующего отлаживаемой программе, его можно запросить для любого частного интерфейса.

    Перед вызовом методов узла программы в массиве, заданного pProgram или rgpProgramNodesолицетворения, при необходимости, следует включить в IDebugProgram2 интерфейсе, представляющем узел программы. Однако обычно этот шаг не требуется. Дополнительные сведения см. в разделе "Проблемы безопасности".

См. также