Condividi tramite


IDebugEngine2::Attach

Collega un motore di debug (DE) a un programma o a un programma. Chiamato dal gestore di debug della sessione (SDM) quando la de è in esecuzione in-process per SDM.

Sintassi

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

Parametri

pProgram
[in] Matrice di oggetti IDebugProgram2 che rappresentano i programmi a cui collegarsi. Si tratta di programmi di porta.

rgpProgramNodes
[in] Matrice di oggetti IDebugProgramNode2 che rappresentano i nodi del programma, uno per ogni programma. I nodi del programma in questa matrice rappresentano gli stessi programmi di in pProgram. I nodi del programma vengono forniti in modo che il DE possa identificare i programmi a cui connettersi.

celtPrograms
[in] Numero di programmi e/o nodi di programma nelle pProgram matrici e rgpProgramNodes .

pCallback
[in] Oggetto IDebugEventCallback2 da utilizzare per inviare gli eventi di debug a SDM.

dwReason
[in] Valore dell'enumerazione ATTACH_REASON che specifica il motivo dell'associazione di questi programmi. Per altre informazioni, vedere la sezione Osservazioni.

Valore restituito

Se ha esito positivo, restituisce S_OK; in caso contrario, restituisce un codice di errore.

Osservazioni:

Esistono tre motivi per collegarsi a un programma, come indicato di seguito:

  • ATTACH_REASON_LAUNCH indica che l'oggetto DE è collegato al programma perché l'utente ha avviato il processo che lo contiene.

  • ATTACH_REASON_USER indica che l'utente ha richiesto in modo esplicito il DE di collegarsi a un programma (o il processo che contiene un programma).

  • ATTACH_REASON_AUTO indica che il DE è collegato a un programma specifico perché sta già eseguendo il debug di altri programmi in un determinato processo. Questo è anche detto collegamento automatico.

    Quando viene chiamato questo metodo, de deve inviare questi eventi in sequenza:

  1. IDebugEngineCreateEvent2 (se non è già stato inviato per una determinata istanza del motore di debug)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    Inoltre, se il motivo dell'associazione è ATTACH_REASON_LAUNCH, la de deve inviare l'evento IDebugEntryPointEvent2 .

    Dopo che DE ottiene l'oggetto IDebugProgramNode2 corrispondente al programma sottoposto a debug, è possibile eseguire una query per qualsiasi interfaccia privata.

    Prima di chiamare i metodi di un nodo del programma nella matrice specificata da pProgram o rgpProgramNodes, la rappresentazione, se necessario, deve essere abilitata nell'interfaccia IDebugProgram2 che rappresenta il nodo del programma. In genere, tuttavia, questo passaggio non è necessario. Per altre informazioni, vedere Problemi di sicurezza.

Vedi anche