Compartir a través de


ICLRProfiling::AttachProfiler (Método)

Adjunta el generador de perfiles especificado al proceso indicado.

HRESULT AttachProfiler(
  [in] DWORD dwProfileeProcessID,
  [in] DWORD dwMillisecondsMax,                     // optional
  [in] const CLSID * pClsidProfiler,
  [in] LPCWSTR wszProfilerPath,                     // optional
  [in] size_is(cbClientData)] void * pvClientData,  // optional
  [in] UINT cbClientData);                          // optional

Parámetros

  • dwProfileeProcessID
    [in] Identificador del proceso al que debe adjuntarse el generador de perfiles. En un equipo de 64 bits, el valor de bits del proceso para el que se generan perfiles coincide con el valor de bits del proceso de desencadenador que está llamando a AttachProfiler. Si la cuenta de usuario bajo la que se llama a AttachProfiler tiene privilegios administrativos, el proceso de destino puede ser cualquier proceso del sistema. De lo contrario, la misma cuenta de usuario debe poseer el proceso de destino.

  • dwMillisecondsMax
    [in] Duración, en milisegundos, para que se complete AttachProfiler. El proceso de desencadenador debe pasar un tiempo de espera que se sabe que es suficiente para que el generador de perfiles determinado complete su inicialización.

  • pClsidProfiler
    [in] Puntero al CLSID del generador de perfiles que se va a cargar. El proceso de desencadenador puede reutilizar esta memoria después de que AttachProfiler vuelva.

  • wszProfilerPath
    [in] Ruta de acceso completa al archivo DLL del generador de perfiles que se va a cargar. Esta cadena no debe contener más de 260 caracteres, incluido el terminador null. Si wszProfilerPath es NULL o una cadena vacía, Common Language Runtime (CLR) intentará averiguar la ubicación del archivo DLL del generador de perfiles buscando en el Registro el CLSID señalado por pClsidProfiler.

  • pvClientData
    [in] Puntero a los datos que el método ICorProfilerCallback3::InitializeForAttach va a pasar al generador de perfiles. El proceso de desencadenador puede reutilizar esta memoria después de que AttachProfiler vuelva. Si pvClientData es null, cbClientData debe ser 0 (cero).

  • cbClientData
    [in] Tamaño, en bytes, de los datos a los que señala pvClientData.

Valor devuelto

Este método devuelve los valores HRESULT siguientes.

HRESULT

Descripción

S_OK

El generador de perfiles especificado se ha adjuntado correctamente al proceso de destino.

CORPROF_E_PROFILER_ALREADY_ACTIVE

Ya hay un generador de perfiles activo o que se está adjuntando al proceso de destino.

CORPROF_E_PROFILER_NOT_ATTACHABLE

El generador de perfiles especificado no admite datos adjuntos. El proceso de desencadenador puede intentar adjuntar un generador de perfiles diferente.

CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER

No se puede solicitar datos adjuntos de un generador de perfiles porque la versión del proceso de destino es incompatible con el proceso actual que está llamando a AttachProfiler.

HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)

El usuario del proceso de desencadenador no tiene acceso al proceso de destino.

HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD)

El usuario del proceso de desencadenador no tiene los privilegios necesarios para adjuntar un generador de perfiles al proceso de destino dado. El registro de eventos de aplicación puede contener más información.

CORPROF_E_IPC_FAILED

Se produjo un error al comunicar con el proceso de destino. Esto suele ocurrir si el proceso de destino se estaba cerrando.

HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)

El proceso de destino no existe o no está ejecutando ningún CLR que admite datos adjuntos. Esto puede indicar que el CLR se descargó desde la llamada al método de enumeración en tiempo de ejecución.

HRESULT_FROM_WIN32(ERROR_TIMEOUT)

El tiempo de espera expiró sin que se empezara a cargar el generador de perfiles. Puede volver a intentar la operación de adjuntar. Los tiempos de espera se producen cuando un finalizador del proceso de destino se ejecuta por más tiempo que el valor de tiempo de espera.

E_INVALIDARG

Uno o más parámetros tienen valores no válidos.

E_FAIL

Se produjo otro error no especificado.

Otros códigos de error

Si el método ICorProfilerCallback3::InitializeForAttach del generador de perfiles devuelve un HRESULT que indica el error, AttachProfiler devuelve ese mismo HRESULT. En este caso, E_NOTIMPL se convierte en CORPROF_E_PROFILER_NOT_ATTACHABLE.

Comentarios

Para obtener más información acerca de cómo adjuntar y desasociar generadores de perfiles, vea Asociar y desasociar un generador de perfiles.

Administración de la memoria

Siguiendo las convenciones COM, el llamador de AttachProfiler (por ejemplo, el código del desencadenador creado por el programador del generador de perfiles) es responsable de asignar y anular la asignación de la memoria en los datos a los que señala el parámetro pvClientData. Cuando el CLR ejecuta la llamada AttachProfiler, realiza una copia de la memoria a la que señala pvClientData y la transmite al proceso de destino. Cuando al CLR dentro del proceso de destino recibe su propia copia del bloque pvClientData, pasa el bloque al generador de perfiles a través del método InitializeForAttach y, a continuación, desasigna su copia del bloque pvClientData del proceso de destino.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4

Vea también

Referencia

ICorProfilerCallback (Interfaz)

ICorProfilerInfo3 (Interfaz)

Otros recursos

Interfaces para generación de perfiles

Generación de perfiles (Referencia de la API no administrada)