IDebugEngine2::Attach
Dołącza aparat debugowania (DE) do programu lub programów. Wywoływany przez menedżera debugowania sesji (SDM), gdy de jest uruchomiony w procesie do sdM.
Składnia
int Attach(
IDebugProgram2[] pProgram,
IDebugProgramNode2[] rgpProgramNodes,
uint celtPrograms,
IDebugEventCallback2 pCallback,
Enum_ATTACH_REASON dwReason
);
Parametry
pProgram
[in] Tablica obiektów IDebugProgram2 reprezentujących programy do dołączenia. Są to programy portowe.
rgpProgramNodes
[in] Tablica obiektów IDebugProgramNode2 reprezentujących węzły programu, po jednym dla każdego programu. Węzły programu w tej tablicy reprezentują te same programy co w programie pProgram
. Węzły programu są podane, aby de mógł zidentyfikować programy do dołączenia.
celtPrograms
[in] Liczba programów i/lub węzłów programu w pProgram
tablicach i rgpProgramNodes
.
pCallback
[in] Obiekt IDebugEventCallback2 , który ma być używany do wysyłania zdarzeń debugowania do sdM.
dwReason
[in] Wartość z wyliczenia ATTACH_REASON , która określa przyczynę dołączenia tych programów. Aby uzyskać więcej informacji, zobacz sekcję: Uwagi.
Wartość zwracana
Jeśli operacja powiedzie się, zwraca wartość S_OK
; w przeciwnym razie zwraca kod błędu.
Uwagi
Istnieją trzy powody dołączania do programu w następujący sposób:
ATTACH_REASON_LAUNCH
wskazuje, że de jest dołączany do programu, ponieważ użytkownik uruchomił proces, który go zawiera.ATTACH_REASON_USER
wskazuje, że użytkownik jawnie zażądał od DE dołączenia do programu (lub procesu zawierającego program).ATTACH_REASON_AUTO
wskazuje, że DE jest dołączany do określonego programu, ponieważ już debuguje inne programy w określonym procesie. Jest to również nazywane automatycznym dołączaniem.Po wywołaniu tej metody de musi wysłać następujące zdarzenia w sekwencji:
IDebugEngineCreateEvent2 (jeśli nie został jeszcze wysłany dla określonego wystąpienia aparatu debugowania)
-
Ponadto, jeśli przyczyną dołączenia jest
ATTACH_REASON_LAUNCH
, de musi wysłać zdarzenie IDebugEntryPointEvent2 .Gdy de pobiera obiekt IDebugProgramNode2 odpowiadający debugowanemu programowi, można go odpytować dla dowolnego interfejsu prywatnego.
Przed wywołaniem metod węzła programu w tablicy podanej przez
pProgram
lubrgpProgramNodes
, personifikacja, jeśli jest to wymagane, należy włączyć wIDebugProgram2
interfejsie reprezentującym węzeł programu. Zwykle jednak ten krok nie jest konieczny. Aby uzyskać więcej informacji, zobacz Problemy z zabezpieczeniami.