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] pProgram
및 rgpProgramNodes
배열의 프로그램 및/또는 프로그램 노드 수입니다.
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는 다음 이벤트를 순서대로 보내야 합니다.
IDebugEngineCreateEvent2(디버그 엔진의 특정 인스턴스에 대해 아직 전송되지 않은 경우)
-
또한 연결 이유가
ATTACH_REASON_LAUNCH
인 경우 DE는 IDebugEntryPointEvent2 이벤트를 보내야 합니다.DE가 디버그 중인 프로그램에 해당하는 IDebugProgramNode2 개체를 가져오면 모든 프라이빗 인터페이스에서 쿼리할 수 있습니다.
pProgram
또는rgpProgramNodes
에 의해 지정된 배열에서 프로그램 노드의 메서드를 호출하기 전에 프로그램 노드를 나타내는IDebugProgram2
인터페이스에서 필요한 경우 가장을 사용하도록 설정해야 합니다. 그러나 일반적으로 이 단계는 필요하지 않습니다. 자세한 내용은 보안 문제를 참조하세요.