IDebugEngine2::Attach

Fügt ein Debugmodul (DE) an ein Programm oder programme an. Wird vom Sitzungsdebug-Manager (SDM) aufgerufen, wenn der DE-Code in der SDM ausgeführt wird.

Syntax

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

Parameter

pProgram
[in] Ein Array von IDebugProgram2-Objekten , die Programme darstellen, die angefügt werden sollen. Dies sind Portprogramme.

rgpProgramNodes
[in] Ein Array von IDebugProgramNode2-Objekten , die Programmknoten darstellen, eine für jedes Programm. Die Programmknoten in diesem Array stellen dieselben Programme wie in pProgram. Die Programmknoten werden angegeben, damit die DE die anzufügenden Programme identifizieren kann.

celtPrograms
[in] Anzahl der Programme und/oder Programmknoten in den pProgram Arrays rgpProgramNodes .

pCallback
[in] Das IDebugEventCallback2-Objekt , das verwendet werden soll, um Debugereignisse an das SDM zu senden.

dwReason
[in] Ein Wert aus der ATTACH_REASON-Aufzählung , der den Grund für das Anfügen dieser Programme angibt. Weitere Informationen finden Sie im Abschnitt Hinweise.

Rückgabewert

Wenn die Ausführung erfolgreich ist, wird S_OK, andernfalls ein Fehlercode zurückgegeben.

Hinweise

Es gibt drei Gründe für das Anfügen an ein Programm, wie folgt:

  • ATTACH_REASON_LAUNCH gibt an, dass die DE an das Programm angefügt ist, da der Benutzer den Prozess gestartet hat, der ihn enthält.

  • ATTACH_REASON_USER gibt an, dass der Benutzer die DE explizit aufgefordert hat, an ein Programm (oder den Prozess, der ein Programm enthält) anzufügen.

  • ATTACH_REASON_AUTO gibt an, dass die DE an ein bestimmtes Programm angefügt wird, da sie bereits andere Programme in einem bestimmten Prozess debuggen. Dies wird auch als automatisches Anfügen bezeichnet.

    Wenn diese Methode aufgerufen wird, muss die DE diese Ereignisse in Folge senden:

  1. IDebugEngineCreateEvent2 (wenn es noch nicht für eine bestimmte Instanz des Debugmoduls gesendet wurde)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    Wenn der Grund für das Anfügen ist ATTACH_REASON_LAUNCH, muss die DE außerdem das IDebugEntryPointEvent2-Ereignis senden.

    Sobald die DE das IDebugProgramNode2-Objekt abruft, das dem zu debuggenden Programm entspricht, kann es für jede private Schnittstelle abgefragt werden.

    Vor dem Aufrufen der Methoden eines Programmknotens im Array, das von pProgram oder rgpProgramNodes, Identitätswechsel, falls erforderlich, auf der IDebugProgram2 Schnittstelle aktiviert werden soll, die den Programmknoten darstellt. Normalerweise ist dieser Schritt jedoch nicht erforderlich. Weitere Informationen finden Sie unter "Sicherheitsprobleme".

Siehe auch