ICLRProfiling::AttachProfiler (Método)
Asocia el generador de perfiles especificado al proceso especificado.
Sintaxis
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 se debe asociar el generador de perfiles. En un equipo de 64 bits, el valor de bits del proceso cuyo perfil se ha generado debe coincidir con el valor de bits del proceso desencadenador que llama a AttachProfiler
. Si la cuenta de usuario con la que llama a AttachProfiler
tiene privilegios administrativos, el proceso de destino puede ser cualquier proceso del sistema. De lo contrario, el proceso de destino debe pertenecer a la misma cuenta de usuario.
dwMillisecondsMax
[in] Tiempo, en milisegundos, que AttachProfiler
tarda en completarse. 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 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 debe contener un máximo de 260 caracteres, incluido el terminador NULL. Si wszProfilerPath
es NULL o una cadena vacía, Common Language Runtime (CLR) intentará encontrar la ubicación del archivo DLL del generador de perfiles; para ello, buscará en el Registro el CLSID al que pClsidProfiler
apunta.
pvClientData
[in] Puntero a datos que se van a pasar al generador de perfiles con el método ICorProfilerCallback3::InitializeForAttach. El proceso 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 HRESULT siguientes.
HRESULT | Descripción |
---|---|
S_OK | El generador de perfiles especificado se ha asociado correctamente al proceso de destino. |
CORPROF_E_PROFILER_ALREADY_ACTIVE | Ya hay un generador de perfiles activo o asociado al proceso de destino. |
CORPROF_E_PROFILER_NOT_ATTACHABLE | El generador de perfiles especificado no admite la asociación. El proceso desencadenador puede intentar asociar un generador de perfiles diferente. |
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER | No puede solicitar la asociación 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 desencadenador no tiene acceso al proceso de destino. |
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) | El usuario del proceso desencadenador no tiene los privilegios necesarios para asociar un generador de perfiles al proceso de destino especificado. El registro de eventos de aplicación puede contener más información. |
CORPROF_E_IPC_FAILED | Se produjo un error de comunicación 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 admita la asociación. 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 se agotó sin que el generador de perfiles comenzara a cargarse. Puede volver a intentar la operación de asociación. El tiempo de espera se agota cuando un finalizador del proceso de destino se ejecuta durante más tiempo que el valor del tiempo de espera. |
E_INVALIDARG | Uno o más parámetros tienen valores no válidos. |
E_FAIL | Se ha producido algún otro error no especificado. |
Otros códigos de error | Si el método ICorProfilerCallback3::InitializeForAttach del generador de perfiles devuelve un HRESULT que indica un error, AttachProfiler devuelve el mismo HRESULT. En este caso, E_NOTIMPL se convierte en CORPROF_E_PROFILER_NOT_ATTACHABLE. |
Comentarios
Administración de memoria
En consonancia con las convenciones de COM, el llamador de AttachProfiler
(por ejemplo, el código desencadenador creado por el desarrollador del generador de perfiles) es responsable de la asignación y desasignación de la memoria para los datos a los que el parámetro pvClientData
apunta. Cuando el CLR ejecuta la llamada a AttachProfiler
, realiza una copia de la memoria a la que pvClientData
apunta y la transmite al proceso de destino. Cuando el CLR dentro del proceso de destino recibe su propia copia del bloque pvClientData
, pasa el bloque al generador de perfiles con el método InitializeForAttach
y, después, desasigna su copia del bloque pvClientData
del proceso de destino.
Requisitos
Plataformas: Vea Requisitos de sistema.
Encabezado: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versiones de .NET Framework: disponible a partir de la versión 4