Udostępnij za pośrednictwem


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:

  1. IDebugEngineCreateEvent2 (jeśli nie został jeszcze wysłany dla określonego wystąpienia aparatu debugowania)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    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 lub rgpProgramNodes, personifikacja, jeśli jest to wymagane, należy włączyć w IDebugProgram2 interfejsie reprezentującym węzeł programu. Zwykle jednak ten krok nie jest konieczny. Aby uzyskać więcej informacji, zobacz Problemy z zabezpieczeniami.

Zobacz też