IDebugEngine2::Attach

Asocia un motor de depuración (DE) a un programa o programas. Lo llama el administrador de depuración de sesión (SDM) cuando el DE se ejecuta en proceso en el SDM.

Sintaxis

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

Parámetros

pProgram
[in] Matriz de objetos IDebugProgram2 a los que se van a adjuntar programas. Estos son programas de puerto.

rgpProgramNodes
[in] Matriz de objetos IDebugProgramNode2 que representan nodos de programa, uno para cada programa. Los nodos de programa de esta matriz representan los mismos programas que en pProgram. Los nodos de programa se proporcionan para que el DE pueda identificar los programas a los que se va a asociar.

celtPrograms
[in] Número de programas o nodos de programa en las pProgram matrices y rgpProgramNodes .

pCallback
[in] Objeto IDebugEventCallback2 que se usará para enviar eventos de depuración al SDM.

dwReason
[in] Valor de la enumeración ATTACH_REASON que especifica el motivo para adjuntar estos programas. Para obtener más información, vea la sección Comentarios.

Valor devuelto

Si la operación se realiza correctamente, devuelve S_OK; de lo contrario, devuelve un código de error.

Comentarios

Hay tres motivos para asociarse a un programa, como se indica a continuación:

  • ATTACH_REASON_LAUNCH indica que el DE está adjuntando al programa porque el usuario inició el proceso que lo contiene.

  • ATTACH_REASON_USER indica que el usuario ha solicitado explícitamente al DE que se adjunte a un programa (o el proceso que contiene un programa).

  • ATTACH_REASON_AUTO indica que el DE está adjuntando a un programa determinado porque ya está depurando otros programas en un proceso determinado. Esto también se denomina asociación automática.

    Cuando se llama a este método, el DE debe enviar estos eventos en secuencia:

  1. IDebugEngineCreateEvent2 (si aún no se ha enviado para una instancia determinada del motor de depuración)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    Además, si el motivo de la asociación es ATTACH_REASON_LAUNCH, el DE debe enviar el evento IDebugEntryPointEvent2 .

    Una vez que el DE obtiene el objeto IDebugProgramNode2 correspondiente al programa que se está depurando, se puede consultar para cualquier interfaz privada.

    Antes de llamar a los métodos de un nodo de programa en la matriz dada por pProgram o rgpProgramNodes, la suplantación, si es necesario, debe estar habilitada en la IDebugProgram2 interfaz que representa el nodo del programa. Normalmente, este paso no es necesario. Para obtener más información, consulte Problemas de seguridad.

Consulte también