IDebugEngine2::Attach

프로그램에 DE(디버그 엔진)를 연결합니다. DE가 SDM(세션 디버그 관리자)에 대해 in-process를 실행할 때 SDM에서 호출됩니다.

구문

int Attach( 
   IDebugProgram2[]     pProgram,
   IDebugProgramNode2[] rgpProgramNodes,
   uint                 celtPrograms,
   IDebugEventCallback2 pCallback,
   Enum_ATTACH_REASON   dwReason
);

매개 변수

pProgram
[in] 연결할 프로그램을 나타내는 IDebugProgram2 개체의 배열입니다. 포트 프로그램입니다.

rgpProgramNodes
[in] 각 프로그램에 대해 하나씩 프로그램 노드를 나타내는 IDebugProgramNode2 개체의 배열입니다. 이 배열의 프로그램 노드는 pProgram에서와 동일한 프로그램을 나타냅니다. DE가 연결할 프로그램을 식별할 수 있도록 프로그램 노드가 제공됩니다.

celtPrograms
[in] pProgramrgpProgramNodes 배열의 프로그램 및/또는 프로그램 노드 수입니다.

pCallback
[in] SDM에 디버그 이벤트를 보내는 데 사용할 IDebugEventCallback2 개체입니다.

dwReason
[in] 이러한 프로그램의 연결 이유를 지정하는 ATTACH_REASON 열거형의 값입니다. 자세한 내용은 주의 섹션을 참조하세요.

Return Value

성공하면 S_OK를 반환하고, 실패하면 오류 코드를 반환합니다.

설명

다음과 같이 프로그램에 연결하는 세 가지 이유가 있습니다.

  • ATTACH_REASON_LAUNCH는 사용자가 DE가 포함된 프로세스를 시작했기 때문에 DE가 프로그램에 연결되고 있음을 나타냅니다.

  • ATTACH_REASON_USER는 사용자가 DE에 프로그램(또는 프로그램이 포함된 프로세스)에 연결하도록 명시적으로 요청했음을 나타냅니다.

  • ATTACH_REASON_AUTO는 DE가 특정 프로세스의 다른 프로그램을 이미 디버깅하고 있기 때문에 특정 프로그램에 연결 중임을 나타냅니다. 이를 자동 연결이라고도 합니다.

    이 메서드가 호출되면 DE는 다음 이벤트를 순서대로 보내야 합니다.

  1. IDebugEngineCreateEvent2(디버그 엔진의 특정 인스턴스에 대해 아직 전송되지 않은 경우)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    또한 연결 이유가 ATTACH_REASON_LAUNCH인 경우 DE는 IDebugEntryPointEvent2 이벤트를 보내야 합니다.

    DE가 디버그 중인 프로그램에 해당하는 IDebugProgramNode2 개체를 가져오면 모든 프라이빗 인터페이스에서 쿼리할 수 있습니다.

    pProgram 또는 rgpProgramNodes에 의해 지정된 배열에서 프로그램 노드의 메서드를 호출하기 전에 프로그램 노드를 나타내는 IDebugProgram2 인터페이스에서 필요한 경우 가장을 사용하도록 설정해야 합니다. 그러나 일반적으로 이 단계는 필요하지 않습니다. 자세한 내용은 보안 문제를 참조하세요.

참고 항목